私のcakephpページには、新しいユーザーを登録するためのものとログイン用のものの2つのボタンがあります。両方のボタンのアクションは、コントローラ内の同じ機能に向けられ、同じview.ctpファイルを持つことができますか?はいの場合、どうすればいいですか?CakePHPで同じビューを持つコントローラの2つの異なるボタンを同じ機能に向けることはできますか?
2
A
答えて
1
はい、ちょうどあなたのボタンで正しいURLを設定します。しかし、私はあなたがこれをやる理由を知らない。 view.ctpをちょうど再利用する場合は、同じビューを使用するために単一のアクションを使用する必要はありません。例:
<?php
class FoobarController extends AppController
{
function view()
{
// This will render views/foobar/view.ctp because the action
// is named "view"
}
function register()
{
// Normally this would render views/foobar/register.ctp but you can
// call the render() function manually and render something else. The
// following call will render views/foobar/view.ctp
$this->render('view');
}
function login()
{
// Same thing here...
$this->render('view');
}
}
?>
0
さて、はい、どうしてですか?これはあなたのフォームアクションに適切なURLを設定するだけの問題ではありませんか?または私は何かを逃していますか?
0
隠しフォームの値を使用して、そのアクションを示すことができます。
$form->create('User', array('action' => 'process');
$form->hidden('User.signup', array('value' => '1'));
$form->end('Signup');
$form->create('User', array('action' => 'process');
$form->hidden('User.login', array('value' => '1'));
$form->end('Login');
なぜ2つの機能を使用したくないのかはっきりしていません。あなたは基本的に、ケーキにあなたのためにそれをさせるのではなく、どのアクションが手動であるかをチェックする必要があります。
お使いのコントローラでfunction process()
{
if ($this->data['User']['signup'] == 1)
{
// process signup
}
if ($this->data['User']['login'] == 1)
{
// process login
}
}
1
私はどちらか「を確認し(編集/作成/削除/など)」または「キャンセル」できるように私のCRUDの管理ページのボタンを作成します。フォームに2つの送信ボタンを作成し、それぞれに固有の名前を付けることでこれを行います。たとえば:
ビューコード:
...
$form->submit('Delete', array('name' => 'delete'));
$form->submit('Cancel', array('name' => 'cancel'));
...
アクションロジック:
function admin_delete(...) {
// Bail if cancel button pressed
if (isset($this->params['form']['cancel'])) {
$this->redirect('/');
}
// Delete if delete button pressed
if (isset($this->params['form']['delete'])) {
// delete stuff
...
}
...
}
フリップ側では、あなたは基本的にビューを再利用のために一つに2つのアクションを壊しています。 Sander Marechal's solutionが良いです。
関連する問題
- 1. なぜ同じ機能が2つの異なることをしますか?
- 2. 2セレクタ、2つの異なるイベント、同じ機能
- 3. 同じ機能を持つさまざまなビューの複数のボタン
- 4. 2つのボタンに同じ機能を適用する方法
- 5. - 同じUser.Identity.Nameを使用して同じビューで同じコントローラで2つのクエリを使用する。
- 6. jqueryの同じクラスを持つ2つの異なるトリガ
- 7. 同じ名前の2つの異なるDLLを持つプロジェクト
- 8. axis2:同じ名前を持つ2つの異なるWebサービス
- 9. 同じ設定、異なるパフォーマンスを持つ2つのpostgresqlサーバ
- 10. 同じコードが2つの異なるアプリで2つの異なることをしていますか?
- 11. 同じファイル、同じファイルサイズだが2つの異なるメモリサイズ、なぜですか?
- 12. Rails 3 - 2つのサブドメインの異なるスコープの同じコントローラ
- 13. 同じ.vimrc、2つの異なるコンピュータ
- 14. クッキーは2つの異なるブラウザマシンのクライアントと同じです
- 15. 異なるHTTPメソッドを持つRESTfulコントローラ、ただし同じパラメータ
- 16. 2つの異なるメニューから同じ機能を使用することをお勧めしますか?
- 17. 異なる形状の2つのデータフレームで同じデータを見つける
- 18. 2つのウィンドウでハンドルを同じにすることはできますか?
- 19. 同じコントローラ内に2つの異なるレイアウトテンプレートがありますか?
- 20. 同じコードベースで異なる署名を同時に持つapkの2つのバージョンをアップロードする
- 21. 同じアニメーションで2つの異なるUIViewAnimationCurvesを使用する
- 22. 同じプロジェクトで2つの異なるスケジューリングポリシーを使用する
- 23. 同じシンボルを持つ2つのフレームワーク
- 24. 2つの異なるデバイス(同じ画面密度)で同じ画像に同じ円を描く
- 25. Oracleでは、同じ列にどのように2つの異なる機能を使用しますか?
- 26. 2つの異なるテーブルでの操作と同じ
- 27. git 2つの異なるリポジトリと同じディレクトリをマージする
- 28. ASP.net:同じdll/assemblyの2つの異なるバージョンをbinフォルダに含めることはできますか?
- 29. cakephp:2つの異なるレイアウトファイルに同じナビゲーションバーを含める方法
- 30. 同じタイプのjavaソースファイルを持つEclipseの異なる出力フォルダを持つ2つの異なるソースフォルダ
この例では、 signup()とlogin() – ByteNirvana
という2つの異なる機能を使用しています。うーん。 –