0

私は次の機能を持っています:

 public function make_order($id = null){
        if($this->request->is('post')){
            if(isset($id)){
                $single_product = $this->Product->find('first', array('Product.id' => $id));
                $this->placeOrder($single_product);
            }else{
                $product_array = $_SESSION['basket'];
                foreach($product_array as $product){
                    $this->placeOrder($product);
                }
            }

        }
}
private function placeOrder($product){
    $order_array = array();

    $order_array['Order']['Product_id'] = $product['Product']['id'];
    $order_array['Order']['lejer_id'] = $this->userid;
    $order_array['Order']['udlejer_id'] = $product['users_id'];
    $this->Order->add($order_array);
}

これら2つの関数はビューに「接続」されていませんが、別のビュー内から呼び出す必要があります

このアイブのために、次のことを試しました:

<?php echo $this->Html->link(__('Bestil'), array('action' => 'make_order')); ?>

ただし、これにより、一致するビューが見つからないというエラーがスローmake_orderされ、正当な理由があります(作成したことがなく、作成するつもりはありません)

私の質問は、ビュー内からこの関数を呼び出して実行するにはどうすればよいですか?

4

2 に答える 2

2

関数の最後に、次のmake_orderいずれかを行う必要があります。

a) レンダリングするビュー ファイルを指定する、または b) レンダリングするビュー ファイルがある別のコントローラーおよび/またはアクションにリダイレクトします。

a) 次のようになります。

$this->render('some_other_view_file');

b) 次のようになります (注: フラッシュ メッセージの設定はオプションです)

$this->Session->setFlash(__('Your order was placed'));
$this->redirect(array('controller' => 'some_controller', 'action' => 'some_action'));
于 2013-09-29T22:46:21.080 に答える