4

カテゴリコントローラーに「挿入」という機能があります。/categories/insert のように URL を介して関数を呼び出すと問題なく動作しますが、/categories/insert/ (末尾にスラッシュ) のように関数を呼び出すと、関数は 3 回呼び出されます。

/categories/edit/2 のように編集機能を呼び出しても、編集機能は 3 回呼び出されます。

config/routes.php には、デフォルト ルートしかありません。私の .htaccess はこれです:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|include|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]  

編集:

編集機能のコード:

public function edit($id = '') 
{
    $this->load->helper("form");
    $this->load->library("form_validation");
    $data["title"] = "Edit category";

    $this->form_validation->set_rules('category_name', 'Category name', 'required');

    if (!$this->form_validation->run())
    {
        $data['category'] = $this->categories_model->get_categories($id);
        $this->load->view("templates/admin_header", $data);
        $this->load->view("categories/edit", $data);
        $this->load->view("templates/admin_footer", $data); 
    }
    else
    {
        $this->categories_model->update($id);
        // other logic
    }
}
4

1 に答える 1

0

** 編集 ** http://your.dot.com/insertは、$arg のデータなしで public 関数 insert($arg) を呼び出します。 http://your.dot.com/insert/'index.php' を $arg として挿入を呼び出します。

ルート.php

$route['edit/(:any)'] = 'edit/$1'

クエリ文字列からの任意のパラメーターを受け入れます: yoursite.com/edit/paramまたはyoursite.com/edit/2 edit
という名前のメソッドが必要です。

$route=['default_controller'] = 'foo'をすべてのメソッドのコンテナーとして使用している場合は、ルートを次の$route['edit/(:any)'] = 'foo/edit/$1'ように変更します:$route['(:any)'] = 'foo/$1/$2'ルートの最後の行として (注: これはyoursite.com/insert/paramおよびyoursite.com/edit/で機能します)パラメータ

foo.php

    public function insert() { ... }

    public function edit($id=null) { ... }

    /* End of file foo.php */


.htaccess

    RewriteCond $1 !^(index\.php)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php?$1 [L]
于 2013-05-10T15:11:56.537 に答える