0

今まで使ったことのない CodeIgniter で書かれたプロジェクトを引き継ぎました。features.php というビュー/ページに新しいファイルを追加し、アクセスできるようにするには、ページをレンダリングするコントローラー ファイルに関数を作成する必要があることをインターネットで読みました。

私は次のことを試しました:

public function features()
{
    $this->render('template', 'pages/features');
}

ただし、features.php を開こうとすると、404 が表示されます。どうすれば修正できますか?

更新 1 - クラス

コントローラのクラス コードは次のとおりです。

class Pages extends MY_Controller {

function __construct()
{
    parent::__construct();
    $this->load->model('setting_model', 'setting');
    $this->load->model('order_model', 'order');
    $this->load->model('page_model', 'page');
    $this->load->library('form_validation');
    $this->load->helper(array('inflector', 'string'));
}

public function index()
{
    $settings = $this->setting->get_settings();
    $data['document_price'] = $settings->document_price;
    $this->render('template', 'pages/index', $data); 
}

    //This works fine
public function about_us()
{
    $this->render('template', 'pages/about_us');
}

    //Here is the problem, although it follows the same pattern as about_us()
public function features()
{
    $this->render('template', 'pages/features');
}



}
4

2 に答える 2

2

$ this-> renderを使用しているので、テンプレートライブラリを使用していると思います。私はあなたが使うべきだと思います:

public function features()
{
   $this->template->set_template('template');
   $this->template->write_view('pages/features');    
   $this->template->render();
}
于 2012-09-03T21:16:10.963 に答える
2

に含まれる php ファイルには/views、URL を入力して直接アクセスすることはできません。CodeIgniter は MVC フレームワークです。これは、URL がコントローラーにマップされ、コントローラーがビューを呼び出すことを意味します。

この関数がカプセル化されているクラスの名前は? 関数だけでなく、クラス全体を投稿してくださいfeatures()。私たちがお手伝いします。ローカルで作業している場合、コール コントローラーへのデフォルトのマッピングは次のとおりhttp://localhost/appname/controller/function/param1/param2/etcです。

$this->render()関数は標準の CodeIgniter 構文ではありません。テンプレート ライブラリを使用しているプロジェクトを継承したか、コントローラ クラス内に兄弟関数render()があります。

config/routes.phpファイルも確認し、投稿することを検討してください。

問題を診断したい場合は、への呼び出しを削除し$this->render()、代わりに CodeIgniter のネイティブ$this->load->view('pages/features')関数を使用して特定してみてください。これが機能する場合、それがライブラリまたはrender()呼び出しであることを確認できます。

于 2012-09-03T21:47:37.287 に答える