Я заметил, что существует много разных способов передачи идентификатора в форму при редактировании записи в базе данных. Так, например, для редактирования формы профиля пользователя у меня есть следующий код:
function edit($id = null)
{
$this->layout = 'page';
// this line isn't needed?
//$this->User->id = $id;
if (empty($this->data))
{
$this->data = $this->User->read();
}
else
{
if ($this->User->save($this->data))
{
$this->Session->setFlash('Your profile has been updated', 'flash', array('header' => 'Announcement', 'myclass' => 'success'));
$this->redirect(array('controller' => 'users', 'action' => 'view', $id));
}
}
}
Теперь функция ожидает передачи идентификатора в URL, например, /users/edit/2
Но, допустим, я хотел, чтобы это было что-то более удобное для пользователя, например /profile/edit
(переписано путем маршрутизации). Я бы больше не передавал идентификатор как часть URL. Как вы можете видеть в моем коде, у меня есть строка, которую я закомментировал, потому что она не нужна?
Также в том виде, в котором я тоже нуждаюсь <?php echo $this->Form->input('id', array('type' => 'hidden')); ?>
зачем?
По сути, это больше из того, что мне доступно для создания различных типов форм редактирования и передачи данных в форму. И для чего нужно скрытое поле в форме, если данные передаются либо через URL, либо другим способом
Я также заметил на некоторых сайтах, что у них есть такие вещи, как ключи формы и имя пользователя, хранящиеся в метатегах в заголовке страницы ???
EDIT:
public function beforeFilter()
{
$this->set('authUser', $this->Auth->user());
//
$user = $this->Auth->user();
if (!empty($user))
{
Configure::write('User', $user[$this->Auth->getModel()->alias]);
}
}
public function beforeRender()
{
$user = $this->Auth->user();
if (!empty($user))
{
$user = $user[$this->Auth->getModel()->alias];
}
$this->set(compact('user'));
}
// NEW VERSION
function settings()
{
$this->layout = 'page';
$this->set('title_for_layout', 'Edit Profile');
$this->User->id = $user['id'];
if (empty($this->data))
{
$this->data = $this->User->read();
}
else
{
if ($this->User->save($this->data))
{
$this->Session->setFlash('Your settings have been updated', 'flash', array('myclass' => 'success'));
$this->redirect(array('controller' => 'users', 'action' => 'settings'));
}
}
}