CakePHP – 2 controllers, 1 form
        Posted  
        
            by 
                user1327
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by user1327
        
        
        
        Published on 2012-11-21T22:56:15Z
        Indexed on 
            2012/11/21
            22:59 UTC
        
        
        Read the original article
        Hit count: 242
        
cakephp
|formhelper
I need to create a review form. I have 2 models and 2 controllers – Products and Reviews with 'Products' hasMany 'Reviews' relationship, the review form will be displayed on the current product page (Products controller, 'view' action), and this form will be use another controller (Reviews).
Also I need validation with validation errors being displayed for this form.
In my Products controller view.ctp I have:
// product page stuff...
echo $this->Form->create($model = 'Review', array('url' => '/reviews/add'));
echo $this->Form->input('name', array('label' => 'Your name:'));
echo $this->Form->input('email', array('label' => 'Your e-mail:'));
echo $this->Form->input('message', array('rows' => '6', 'label' => 'Your message:'));
echo $this->Form->end('Send');
echo $this->Session->flash();
ReviewsController -> add:
public function add() {
if ($this->request->is('post')) {
    $this->Review->save($this->request->data); 
    $this->redirect(array('controller' => 'products', 'action' => 'view', $this->request->data['Review']['product_id'], '#' => 'reviews'));
    }
}
Somehow this horrible code works.. in part. Review saves, but I don't get validation errors, and I can't add
'if ($this->Review->save($this->request->data);) {
    //...
}
because it will break this action (missed view error).
My question is how to properly deal with this situation to achieve functionality that I need? Should I use elements with request action or I should move adding reviews to the ProductsController?
© Stack Overflow or respective owner