[php] CodeIgniter : 새로운 도우미를 만드시겠습니까?

다른 방법으로 많은 배열을 반복하여 페이지에 표시해야합니다. 배열은 모듈 클래스에 의해 생성됩니다. ‘보기’에 함수를 포함하지 않는 것이 더 좋으며 함수 파일을 삽입 할 위치를 알고 싶습니다.

도우미를 ‘확장’할 수는 있지만 도우미를 확장하고 싶지는 않습니다. 루프 함수를 사용하여 도우미를 만들고 싶습니다. loops_helper.php



답변

CodeIgniter 도우미는 여러 기능을 가진 PHP 파일입니다. 수업이 아닙니다

파일을 만들고 다음 코드를 넣습니다.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('test_method'))
{
    function test_method($var = '')
    {
        return $var;
    }
}

이것을 application / helpers /에 저장하십시오 . 우리는 그것을 “new_helper.php”라고 부를 것입니다

첫 번째 행은 파일을 CodeIgniter 범위 외부에서 포함하고 실행할 수 없도록하기위한 것입니다. 이것 이후의 모든 것은 자명하다.

도우미 사용


이것은 컨트롤러 , 모델 또는 보기에 있을 수 있습니다 (바람직하지 않음)

$this->load->helper('new_helper');

echo test_method('Hello World');

이 헬퍼를 여러 위치에서 사용하는 경우 자동로드 구성 파일에 추가하여 자동으로로드되도록 할 수 있습니다 (예 🙂 <your-web-app>\application\config\autoload.php.

$autoload['helper'] = array('new_helper');

매튜


답변

헬퍼 내에서 CI 인스턴스를 사용할 수있는 일부 코드 :

function yourHelperFunction(){
    $ci=& get_instance();
    $ci->load->database();

    $sql = "select * from table";
    $query = $ci->db->query($sql);
    $row = $query->result();
}


답변

나를 위해 "_helper"다음과 같이 PHP 파일에 텍스트를 추가하는 것만 작동 합니다.

Codeiginiter 헬퍼

그리고 폴더 aplication-> 파일 autoload.php 에 도우미를 자동으로로드하려면 다음과 같이 “_helper”없이 배열 도우미의 이름을 추가하십시오.

$ autoload [ ‘helper’] = 배열 ​​( ‘comunes’);

그로 인해 모든 도우미 기능을 사용할 수 있습니다


답변

새로운 도우미를 만들려면 Pixel Developer지침을 따를 수 있지만 특정 응용 프로그램의 특정 부분에 필요한 논리에 대해서만 도우미를 만드는 것은 아닙니다. 대신 컨트롤러에서 해당 논리를 사용하여 어레이를 최종 의도 한 값으로 설정하십시오. 일단 얻은 후에는 템플릿 파서 클래스를 사용하여 뷰에 전달하면 (반복적으로) 반향이나 foreachs 대신 간단한 변수 또는 변수 태그 쌍을 사용하여 PHP처럼 보이는 항목에서 뷰를 깨끗하게 유지할 수 있습니다. 즉 :

{blog_entries}
<h5>{title}</h5>
<p>{body}</p>
{/blog_entries}

대신에

<?php foreach ($blog_entries as $blog_entry): ?>
<h5><?php echo $blog_entry['title']; ?></h5>
<p><?php echo $blog_entry['body']; ?></p>
<?php endforeach; ?>

이 방법의 또 다른 이점은 사용자 지정 도우미를 사용하여 모든 작업을 수행 할 때처럼 CI 인스턴스 추가에 대해 걱정할 필요가 없다는 것입니다.


답변

/ application / helpers 에서 헬퍼 이름으로 파일을 작성 하고 자동로드 구성 파일에 추가하거나 수동으로로드하십시오.

예를 들어 user_helper.php 파일 을 / application / helpers 에 다음 내용으로 저장하십시오.

<?php
  function pre($var)
  {
    echo '<pre>';
    if(is_array($var)) {
      print_r($var);
    } else {
      var_dump($var);
    }
    echo '</pre>';
  }
?> 

이제 헬퍼를 통해로드 $this->load->helper(‘user’);하거나 application / config / autoload.php 구성에 추가 할 수 있습니다 .


답변

응용 프로그램 도우미 디렉토리에 도우미를 정의한 다음 컨트롤러에서 함수 이름과 같이 호출하십시오.

helper name = new_helper.php
function test_method($data){
 return $data
}   

컨트롤러에서 도우미로드

$this->load->new_helper();
$result =  test_method('Hello world!');
if($result){
 echo $result
}

출력은

Hello World!


답변

구성 파일에서 항목을 검색하려면 다음 기능을 사용하십시오.

$this->config->item('item name');
여기서 item name은 검색하려는 $ config 배열 색인입니다. 예를 들어, 언어 선택을 가져 오려면 다음을 수행하십시오.

$lang = $this->config->item('language');
가져 오려는 항목이 존재하지 않으면 함수는 FALSE (부울)를 반환합니다.

구성 항목을 특정 색인에 할당하기 위해 $ this-> config-> load 함수의 두 번째 매개 변수를 사용하는 경우 $ this-> config-의 두 번째 매개 변수에 색인 이름을 지정하여 구성 항목을 검색 할 수 있습니다. > item () 함수. 예:

// blog_settings.php라는 구성 파일을로드하고 “blog_settings”라는 인덱스에 할당합니다.

$this->config->load('blog_settings', TRUE);

// blog_settings 배열에 포함 된 site_name이라는 구성 항목을 검색합니다.

$site_name = $this->config->item('site_name', 'blog_settings');

// 같은 항목을 지정하는 다른 방법 :

$blog_config = $this->config->item('blog_settings');

$ site_name = $ blog_config [ ‘site_name’];