2011-09-28 1 views
1

В Codeigniter есть библиотека и помощник. Я могу получить доступ к контроллеру и его подфункции. для eample.codeigniter, библиотека или помощник могут получить доступ через url?

login/getid 

Есть ли способ получить доступ к библиотеке или помощнику через URL-адрес?

Обновление: Я сделал библиотеку captcha в контроллере входа. Я хочу использовать его во многих других версиях контроллера. в файл представления, то капчу должен быть таким,

<img src="/login/get_captcha" /> 

каждый раз, когда я хочу использовать капчу, я должен назвать контроллер входа.

Итак, я думал, что должен быть лучший способ сделать это. Если библиотека или помощник могут получить доступ через URL-адрес, я могу сделать это помощником. может получить доступ к виду другого контроллера без загрузки контроллера входа.

ответ

5

Вы можете создать контроллер оболочки для доступа к этим функциям исключительно и использовать свои маршруты, чтобы использовать сказал URL в

Пример: yoursite.com/helper/geo/citiesNearZip/90210

class helperController extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->helper($this->uri->segment(1)); // geo helper in this example 

     if($this->uri->segment(2)) 
     { 
      $helper_method = $this->uri->segment(2); 
     } 
     else 
     { 
      show_404(); 
      return false; 
     } 

     // check if helper has function named after segment 2, function citiesNearZip($zip) in this example... 
     if(function_exists($helper_method) 
     { 
      // Execute function with provided uri params, xss filter, secure, etc... 
      // You would also want to grab all the remaining uri params and pass them as 
      // arguments to your helper function 
      $helper_method(); 
     } 
    } 
} 
+0

права, я могу освободить контроллер обертки, и могу получить доступ к этим. Я знаю это. Благодарю. –

+0

Возможно, это лучший способ ... –

+0

Это действительно плохая идея. Вы не можете ошибочно обрабатывать свои URL-запросы при этом - если «geo» - хелпер, которого не существует, код просто взорвется. Это «аккуратный взлом», но плохое кодирование. – jmadsen

2

Nope. Это просто не то, как рамочная программа была разработана для работы.

Если вы считаете, что вам нужно напрямую обратиться к помощнику/библиотеке, то вы, вероятно, делаете что-то неправильно.

Можете объяснить, что вы пытаетесь сделать? Должен быть лучший способ.