AdとRecord、Ad hasOne RecordとRecord belongsTo Ad の2 つのモデルがあります。 追加フォームと編集フォームは機能していますが、セキュリティ コンポーネントを使用すると、リクエストがブラック ホールになります。多分私はベストプラクティスを使用していません。コントローラ AdsController.php :
public function admin_edit($id = null){
$this->Ad->id = $id;
if ($this->request->is('get')){
$this->request->data = $this->Ad->read();
} else {
if ($this->Ad->save($this->request->data)) {
$this->Ad->Record->save($this->request->data);
$this->Session->setFlash('Vos données ont étées mises à jour');
$this->redirect(array('action' => 'admin_index'));
}else {
$this->Session->setFlash('Impossible d\'éditer l\'annonce !');
}
}
}
ここに私のフォーム admin_edit.ctp があります:
<!-- Ads/admin_edit -->
<?php
/* Breadcrumb */
$this->Html->addCrumb('Annonces', '/admin/ads');
$this->Html->addCrumb('Edition annonce', '/admin/ads/edit');
?>
<h1>Editer une annonce</h1>
<hr>
<div class="row">
<div class="span6 pull-left">
<h3>Annonce</h3>
<?php
echo $this->Form->create('Ad', array('action'=>'edit'));
echo $this->Form->input('name', array('label' => 'Nom de l\'annonce', 'error' => array('attributes' => array('wrap' => 'div', 'class' => 'alert alert-error'))));
echo $this->Form->input('category',array('label'=>'Définir si location ou vente','options'=>array('location' =>'location', 'vente' => 'vente'), 'empty' => 'choisir', 'error' => array('attributes' => array('wrap' => 'div', 'class' => 'alert alert-error'))));
echo $this->Form->input('type', array('label' => 'Choisir le type de bien',
'options' => array('appartement' => 'appartement', 'maison/villa' =>'maison/villa', 'terrain' => 'terrain'),
'empty' => 'choisir',
'error' => array('attributes' => array('wrap' => 'div', 'class' => 'alert alert-error')
)));
echo $this->Form->input('room', array('label' => 'Nombre de pièces *indiquer un chiffre',
'error' => array('attributes' => array('wrap' => 'div', 'class' => 'alert alert-error'))));
echo $this->Form->input('country', array('label' => 'Le Pays',
'options' => array('France' => 'France', 'Espagne' => 'Espagne'),
'empty' => 'choisir',
'error' => array('attributes' => array('wrap' => 'div', 'class' => 'alert alert-error')
)));
echo $this->Form->input('city', array('label' => 'Ville',
'options' => array('Antibes' => 'Antibes', 'Beaulieu' => 'Beaulieu', 'Cagnes sur mer' => 'Cagnes sur mer', 'Cannes' => 'Cannes', 'Cap d\'Ail' => 'Cap d\'Ail', 'Eze' => 'Eze', 'Juan les Pins' => 'Juan les Pins', 'La Turbie' => 'La Turbie', 'Menton' => 'Menton', 'Nice' => 'Nice', 'Roquebrune Cap Martin' => 'Roquebrune Cap Martin', 'Saint Jean Cap Ferrat' => 'Saint Jean Cap Ferrat', 'Saint Laurent du Var' => 'Saint Laurent du Var', 'Saint Tropez et alentours' => 'Saint Tropez et alentours', 'Villefrance' => 'Villefrance', 'Villeneuve Loubet' => 'Villeneuve Loubet', 'Alicante' => 'Alicante', 'Altea' => 'Altea', 'Benidorm' => 'Benidorm', 'Calpe' => 'Calpe', 'Santa Pola' => 'Santa Pola', 'Villajoyosa' => 'Villajoyosa' ),
'empty' => 'choisir'
));
echo $this->Form->input('price', array('label' => 'Prix *indiquer un chiffre, exemple pour 300 000 euros, écrire 300000'));
echo $this->Form->input('description', array('label' => 'Description'));
echo $this->Form->input('picture', array('label' => 'Liens image', 'type' => 'file'));
?>
</div>
<div class="span6 pull-right">
<h3>Dossier lié à l'annonce (contacts du propriétaire, addresse du bien immobilier)</h3>
<?php echo $this->Form->input('Record.address', array('label' => 'Addresse de l\'appartement')); ?>
<?php echo $this->Form->input('Record.id', array('type' => 'hidden')); ?>
</div>
</div>
<?php /*echo $this->Form->button('Envoyer', array('type' => 'submit',
'class' => 'btn btn-primary'));*/ ?>
<?php echo $this->Form->end('Valider'); ?>
ありがとうございます!