Я использую cakephp 3.x, и у меня есть функция edit в моем контроллере, в которой я проверяю, есть ли идентификатор в строке запроса или нет, а также есть ли он существует в записи базы данных или нет. Ниже приведен мой код, который отлично работает.
UsersController.php
public function edit($id = null)
{
// first checking whether id sent or not ..
if(empty($this->request->params['pass']))
{
$this->Flash->error('Invalid Action');
return $this->redirect(['action' => 'index']);
}
// Now checking whether this user id exists or
$check_user = $this->Users
->find()
->where(['user_id' => $id])
->toArray();
if(!$check_user)
{
$this->Flash->error('Invalid Id, User not found');
return $this->redirect(['action' => 'index']);
}
$user = $this->Users->get($id);
// And so on
}
Дело в том, что я использую этот же код во многих других функциях, чтобы проверить то же самое, поэтому я придумал создать общую функцию в том же контроллере и использовать ее в нескольких функциях, как показано ниже.
UsersController.php (обновлено)
public function checkId($id)
{
// first checking whether id sent or not ..
if(empty($this->request->params['pass']))
{
$this->Flash->error('Invalid Action');
return $this->redirect(['action' => 'index']);
}
// Now checking whether this user id exists or
$check_user = $this->Users
->find()
->where(['user_id' => $id])
->toArray();
if(!$check_user)
{
$this->Flash->error('Invalid Id, User not found');
return $this->redirect(['action' => 'index']);
}
}
public function edit($id = null)
{
$this->checkId($id);
}
Теперь, если я выполню URL-адрес в своем браузере http://localhost/5p_group/users/edit/ я получаю сообщение об ошибке Запись не найдена в таблице «пользователи» с первичным ключом [NULL]
Может ли кто-нибудь подсказать мне, как выполнить оба этих 2 условия (проверить идентификатор в URL-адресе или нет, а также является ли он действительным идентификатором или нет), используя общую функцию, которую я создал выше.. она работает абсолютно нормально, если я поместил этот код внутри моя та же функция edit().
Любая помощь или предложение будут высоко оценены.
Спасибо