2

こんにちは私はcodeigniterを初めて使用します。私はテストアプリケーションを開発することでこのフレームワークを学んでいます。ユーザーリストと各レコードの前に、そのレコードを編集するためのアンカータグを表示しています。そのアンカータグは次のようになります

echo(anchor('first/edit_user/'.$value->id,'Edit'));

ブラウザを最初のコントローラとedit_user関数にリダイレクトします。edit_user関数で、このように編集のビューをロードします。

$this->load->view('edit_user',$data);

選択したレコードに関するビューをロードしてレコードを編集し、URLは次のようになります。

http://localhost/CodeIgniter/index.php/first/edit_user/9 

すべてが正常に機能します。しかし、ユーザーが更新ボタンをクリックすると、再び同じ機能になります。レコードを更新してから、同じビューを再度ロードしようとしますが、ここで問題が発生します。レコードを更新した後、ビューが読み込まれ、URLは次のようになります

http://localhost/CodeIgniter/index.php/first/edit_user

選択したレコードのIDがないため、エラーが発生します。このように関数のロードビューコードを変更した場合

          $this->load->view('edit_user/'$this->uri->segment(3)),$data);

edit_user/.phpが定義されていないというエラーが発生します。ここで、レコードが更新されたことを通知する同じ編集フォームにユーザーをリダイレクトするにはどうすればよいですか?コントローラの機能から選択したレコードのビューをロードするにはどうすればよいですか?

4

2 に答える 2

2

まず、URLヘルパー「config/autoload.php」をロードします

/*
| -------------------------------------------------------------------
|  Auto-load Helper Files
| -------------------------------------------------------------------
| Prototype:
|
|   $autoload['helper'] = array('url', 'file');
*/

$autoload['helper'] = array('url');

または、関数自体にURLヘルパーをロードします

public function edit_user($user_id = '')
{
    if(!is_numeric($user_id) {
        // user id is not here redirect somewhere //
        redirect('home/index');
    }

    if(isset($_POST['submit'])) {
        // proceed to model // @param is optional // you can pass hidden field from form also //
        $this->user_model->edit_user($user_id)
    }

    $this->load->helper('url');
    $this->load->view('first/edit_user', $data);
}

今あなたのフォームに行きます:

<form method="post" action="<?php echo current_url(); ?>">

</form>

これも送信後、同じ編集ページに戻ります。

これがお役に立てば幸いです。何かあればお知らせください...ありがとうございます!!

于 2011-06-18T10:10:45.490 に答える
2

現在のURLと同じURLにリダイレクトするには:

redirect(current_url());

それ以外の場合は、リダイレクトする場所を具体的に指定します。

$ this-> load-> view('edit_user /'$ this-> uri-> segment(3))、$ data);

edit_user/.phpが定義されていないというエラーが発生します。

特定のURLセグメントを使用する代わりに、コントローラーに渡されたパラメーターを使用してデフォルトを設定し、渡された引数(urlセグメント)が存在しないか無効になる可能性を処理します。例:

function edit_user($id = NULL)
{
    if ( ! $id) // handle error (redirect with message probably)

    $user = $this->user_model->get($id);

    if ( ! $user) // User not found, handle the error

    // If user found, load the view and data

}

コントローラはまだphpクラスと関数であり、ユーザー入力(アドレスバーに入力できるもの)を受け入れることを忘れないでください。したがって、URLの内容については何も想定せず、必要なデータがない場合は常に適切に応答してください。

于 2011-06-18T09:35:09.977 に答える