2014-11-14 2 views
1

Можем ли мы написать несколько функций внутри другой функции в Codeigniter.? вот мой контролерМожет ли кодогенератор поддерживать встроенные функции.?

class Products extends CI_Controller { 

    public function myproduct() { 
     $this->load->view('myproduct'); // call myproduct.php 

      public function features() { 
       $this->load->view('features'); // call "myproduct/features" 
      } 

      public function screenshots() { 
       $this->load->view('screenshots'); // call "myproduct/screenshots" 
      } 
    } 
} 

Согласно моему контроллеру, внутри myproduct() есть встроенные функции. Моя цель ISTO отображения URL как

localhost/mysite/products/myproduct 
localhost/mysite/products/myproduct/features 
localhost/mysite/products/myproduct/screenshots 

я уже пробовал, но он дает мне ошибку

Parse error: syntax error, unexpected 'public' (T_PUBLIC) in D:\...........\application\controllers\mysite\products.php on line 5 

и линии 5 был

public function features() { ......... 
+0

почему вы должны п внутри внутри функции? –

+0

в методе 'myproduct' принимать параметры и решать с условиями. вы не можете добавить какой-либо метод внутрь, –

+0

Нет, вы не сможете загрузить метод внутри метода, и на самом деле вы этого не хотите. Что именно вы хотите получить от этого? –

ответ

0

Вы можете рассматривать это как Ури В параметре в URL:

public function myproduct($param = null) 
{ 
    if($param == null) { 
     $this->load->view('myproduct'); 
    } elseif($param == 'features') { 
     $this->load->view('features'); 
    } elseif ($param == 'screenshots') { 
     $this->load->view('screenshots'); 
    } 
} 
+0

Спасибо, привидение. –

+0

@ShifanaMubi, конечно, человек рад, что это помогло – Ghost

0

Это не то, что в CodeIgniter. .. Это вообще невозможно в PHP. Вы можете работать с закрытием, но они не оказывают желаемого эффекта в вашем случае.

Попробуйте прочитать CodeIgniter URI Routing, чтобы понять принципы маршрутизации внутри codeigniter. Затем создайте отдельные функции в контроллерах.

0

Я не уверен, что вы пытаетесь достичь и как вы собираетесь позвонить/использовать эти функции и в каком объеме, но в для того, чтобы объявить функцию внутри функции вы это делаете:

public function myproduct(){ 

    $t = 'myproduct'; 

    $features = function($t = '', &$this = ''){ 
     // some code goes here 

     $this->load->view('features'); // will NOT work 

     $this->load->view($t.'/features'); // this should work 
    }; 

    $features($t, $this); // load the features view 

} 

Это должно быть вашей целью, хотя:

public function myproduct($uri_piece = ''){ 

    $this->load->view('myproduct/'.$uri_piece); 

} 
+0

Я думаю, что ни '$ this', ни' $ t' не находится в рамках анонимной функции. – Karolis

+0

@ Каролис спасибо, я забыл, что это не Javascript lol – MonkeyZeus

Смежные вопросы