1

私はこのプロジェクトにcodeigniterを使用しています。コントローラーAからビューAに渡すID値があります。このID値は、アンカータグ間のエコーです。このアンカータグをクリックすると、id値を持つ別のコントローラーBにリダイレクトされ、コントローラーB内でこのid値が処理されます。uriクラスを使用する以外にこれを行う方法はありますか?URLをクリーンに保ちたい。

コントローラーAからビューA、コントローラーBにシフトするときに、非表示の入力要素を追加する方法を考えましたが、非常に面倒な場合があることに気付きました。

これを行うためのクリーンな方法はありますか?よろしくお願いします!

4

2 に答える 2

11

Stackoverflowを初めて使用する私のレイアウトを理解できるかどうかを確認してください。

方法1

使用しない正当な理由がある場合を除いて、URIクラスを使用してください。

CONTROLLER_Aから

$data["id"] = ("ID NUMBER");
$this->load->view("VIEW_A", $data);

ビューAのアンカー

<a href="<?php echo base_url() ?>/controller_b/controllerfunction/<?php echo $id ?>">link</a>

IN CONTROLLER_B

$id = $this->uri->segment(3);

方法2

物事を隠したい場合は、FORMPOSTを使用してください。

$data["id"] = ("ID NUMBER");
$this->load->view("VIEW A", $data);

ビューAのアンカー

<form name="myform" id="myform" action="<?php echo base_url() ?>/controllerB/controllerfunction/" method="post">
<input type="hidden" name="id" id="id" value="<?php echo $id ?>" />
<input type="submit" value="See more" />
</form>

次の場合は、JavaScriptを使用して、リンクを介してここにフォームを送信することもできます。

 <a href="javascript;" onclick="document.getElementById('myform').submit();"> See more</a>

ヒント:不透明度を0に設定することで、cssを使用してフォームの送信ボタンを非表示にすることもできます。リンクがフォーム内にある場合は、javascript:this.submit();

またはJQUERY

<a href="javascript;" id="link">See more</a>
$('#link').click(function() {
    $('#myform').submit();
});

CONTROLLERBで

$id = $this->input->post("id");
于 2013-02-25T06:11:55.063 に答える
1

よく隠された入力は機能します。メソッドにリダイレクトしてID値を使用すると、データベースからデータを取得し、必要なクリーンURLを使用して別のコントローラーメソッドに再度リダイレクトするという別の回避策があります。これが役立つことを願っています。

于 2013-02-23T20:12:13.867 に答える