только начиная с cakephp и почти с php через несколько лет без его использования ....
У меня есть такая структура таблицы: Родительская таблица ...... Клиенты:
<?php
class Cliente extends AppModel
{
var $name = 'Cliente';
var $validate = array(
'nombre' => array('rule'=>'notEmpty')
);
var $hasMany = array(
'Proyecto' => array(
'className' => 'Proyecto',
'foreignKey' => 'cliente_id',
'order' => 'Proyecto.nombre ASC',
'dependent' => true
)
);
}
?>
И дочерняя таблица: Proyects .. Клиенту может быть назначено несколько проектов.
<?php
class Proyecto extends AppModel
{
var $name = 'Proyecto';
var $validate = array(
'nombre' => array('rule'=>'notEmpty')
);
//var $belongsTo = 'Cliente';
var $belongsTo = array(
'Cliente' => array(
'className' => 'Cliente',
'foreignKey' => 'cliente_id'
)
);
}
?>
Можно добавить только проекты (INSERT) изиндексное представление клиента.Итак, у меня есть метод add (anadir):
function anadir($cliente_id, $nombre) {
if (!empty($this->data)) {
// echo "El código de cliente 22222: ". $this->data['Proyecto']['id'] . "</br>";
// echo "El código de cliente fk: ". $this->data['Proyecto']['cliente_id'] . "</br>" ;
// print_r($this->data);
//$this->data['Proyecto']['cliente_id'] = $cliente_id;
if ($this->Proyecto->save($this->data)) {
$this->Session->setFlash('El proyecto ha sido grabado.');
$this->redirect(array('controller'=>'clientes', 'action'=>'listar'));
}
} else {
//echo "El código de cliente 11111: ". $this->data['Proyecto']['id'];
$this->data['Proyecto']['cliente_id'] = $cliente_id;
}
$this->set('idcliente', $cliente_id);
$this->set('nombrecliente', $nombre);
}
Я могу показать родительский клиент (id и номер) в представлении anadir.ctp, но он всегда обновляет один и тот же проект, изменяятолько имя и описание.В таблице не делается ADD / INSERT, только ОБНОВЛЕНИЕ.
<!-- File: /app/views/proyectos/anadir.ctp -->
<h1>Añadir proyecto a cliente <?php echo "[$idcliente] - $nombrecliente"; ?></h1>
<?php
//echo $this->Form->create('Proyecto', array('action' => 'anadir'));
echo $this->Form->create('Proyecto', array('url' => '/proyectos/anadir/'.$idcliente.'/'.$nombrecliente)); // array('action' => 'anadir'));
echo $this->Form->input('cliente_id', array('type' => 'hidden'));
echo $this->Form->input('nombre');
echo $this->Form->input('descripcion', array('rows' => '10'));
echo $this->Form->end('Grabar proyecto');
echo $this->Html->link('Cancelar', array('controller'=>'clientes', 'action'=>'listar'));
?>
Конечно, это вопрос новичка, но я попробовал почти все.
Есть идеи?
Заранее спасибо.
==== Наконец-то ====
После нескольких дней попыток решить эту проблему, он работает.Но я не могу понять проблему, и у меня нет никакого объяснения, почему у меня возникла эта странная проблема ...
Так что я собираюсь смотреть вперед symfony2 Возможно, начать труднее, но я надеюсь, что более гибким (с несколькими PrimaryКлючи и поддержка внешних ключей, в основном) и ясно, чем CakePHP.