Может ли codeigniter поддерживать встроенные функции?

Можем ли мы написать несколько функций внутри другой функции в 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 () есть 2 встроенные функции. моя цель — отобразить 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() { .........

1

Решение

Вы можете просто рассматривать это как параметр URI в 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

Другие решения

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

Попробуйте прочитать CodeIgniter URI Маршрутизация понять принципы маршрутизации внутри 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
По вопросам рекламы [email protected]