0

私は CodeIgniter の初心者で、まだ (多くのことを) 学んでいます。

だから私はビューを持っていて、フォームを送信するときに、サイト/削除などの適切なURLを動的にサーフィンしてコントローラーを「呼び出し」ます

    class Site extends Controller {

    function index(){$this->load->view('...')}

    function delete() {
        $this->site_model->delete_row();
        $this->index();
    }

    }

そのアクションが完了すると (行が削除されます)、$this->index(); を呼び出します。私の最初のページにリダイレクトしますが(これは良いことです)、私のURLはそのままです: site/delete 。URL を ../site/index (または /index なし) にしたい

どんな助けでも大歓迎です:-)。

4

4 に答える 4

2

これまでのところ、これを解決するための何かを見つけました:

それ以外の:

$this->index();

私が使用しているもの:

redirect('site');

これが良い習慣であることを誰かが知っていますか?

于 2010-06-03T11:56:10.877 に答える
0
$this->index();

関数内の関数の呼び出しは、その関数内の機能を実行するだけです。そして、URLは決して変更されませんでした。

使用する URL を変更するため。

redirect ( base_url().'site');

ただし、コンストラクターで url ヘルパーをロードする必要があります。

于 2014-08-05T08:33:57.423 に答える
0

私の好みの方法は、後でユーザーに表示されるのと同じ方法で処理されるようなアクションを持つことです。

その後、ユーザーとして /site/delete にアクセスするとどうなりますか? エラーを検出してスローする (メッセージを表示する) か、適切なページにリダイレクトする必要があります。/site/delete は意味がありません。

たとえば、ユーザーが削除後に概要を通常表示する場合、私のフォームは /site/index; に投稿されます。通常の作業を行う前に、状態をindexすばやくチェックして同じコントローラーを呼び出します。_delete()

そうすれば、ユーザーがページを更新したり、「戻る」を押したりしても、一貫して見えるはずです。

もう 1 つの例は、/settings/edit がそれ自体に投稿することです。これは、投稿に基づいて動作し、出力 (検証エラーなど) を表示できることを意味します。これは/settings/do_edit、サイトに場所がないことを意味し、ユーザーが/settings/edit安全に戻って設定を編集するためのフォームを表示できることも意味します。

これはおそらく客観的な質問に対する主観的な見方だと思います。私の意見についてフィードバックをお寄せください。しかし、それはあなたが尋ねた問題を回避する私の方法です.

于 2010-06-04T11:55:49.537 に答える
0

リダイレクトは、使用する必要があるものです。

ユーザー ガイド: http://codeigniter.com/user_guide/helpers/url_helper.html

ユーザーがログインしているかどうかを確認してから使用します。ログインしているかどうかに応じて、別の場所にリダイレクトします。

また、リダイレクト後のコードは実行されないことに注意してください。必要なことをすべて実行したら、必ずリダイレクトしてください。

于 2010-06-03T13:26:38.967 に答える