user1443827
user1443827

Reputation: 55

blackhole cakephp 2 associated entities

My Goal: Reuse of a contact form to be related to several different entities I call "Parents" ie Group has contact information, Member has contact info etc.... The way I tried doing it was: 1. Creating a view file for contact, named "form.ctp" which doesn`t create a new form, nor submits, just echo's the contact's fields. 2. Calling this file using requestAction My Problem: The form's _Token get crumbled.

Parent add.ctp example

    <?php echo $this->Form->create('Group');?>
            <fieldset>


                echo $this->Form->input($field_prefix.'contact_id',array('type'=>'hidden'));
<?php echo $this->requestAction(array('controller' => 'contacts', 'action' => 'form'), array('named' => array('index'=>'0','parent'=>'Group',
        'fields'=>array(
        'email'=>array('value'=>'[email protected]','hidden'=>1)
))));

inside the form.ctp I have:

  //Associated Model
    echo $this->Form->input('Contact.0.city',array('type'=>'hidden'));

            echo $this->Form->input('Contact.0.postcode');
            echo $this->Form->input('Contact.0.phone');
            echo $this->Form->input('Contact.0.cellphone');
            echo $this->Form->input('Contact.0.email',array('value'=>""));
            echo $this->Form->input('Contact.0.id',array('type'=>'hidden'));        
        ?>

Looking at the HTML source code that is generated, I see that whether I use the request action or just copy the contect of the form.ctp into the "Parent's" add file, I get the same HTML result. HOWEVER!!! when I use the form.ctp Action Request, I get the blackhole, the tokens are being messed up!!! Any Ideas? Thanks in advance Orly

Upvotes: 3

Views: 296

Answers (1)

ahjohnston25
ahjohnston25

Reputation: 1975

If your problem is solely reusing a form, you can use the form as a Element, and then you could call it multiple times, substituting in the exact values you need.

As for SecurityComponent, I would recommend (at least as a temporary fix) disabling SecurityComponent for that specific action by using $this->Security->unlockedActions(); in your controller's beforeFilter()

Upvotes: 1

Related Questions