Php 如果用户没有配置文件,则显示404
在我的应用程序中,用户可能有个人资料,也可能没有个人资料。例如:Php 如果用户没有配置文件,则显示404,php,cakephp,Php,Cakephp,在我的应用程序中,用户可能有个人资料,也可能没有个人资料。例如: Array ( [User] => Array ( [id] => 7 [username] => noprofile [password] => 3b8cdb0c849f00f3634d9b29def1dac4e9235795 [email] => noprofile@noprof
Array
(
[User] => Array
(
[id] => 7
[username] => noprofile
[password] => 3b8cdb0c849f00f3634d9b29def1dac4e9235795
[email] => noprofile@noprofile.com
[status] => 0
[code] => 114a10ebb6ffe364805aa70cd44bee7c
)
[Profile] => Array
(
[id] =>
[firstname] =>
[lastname] =>
[gender] =>
[dob] =>
[user_id] =>
)
)
在这里,用户noprofile在profiles表中没有匹配的内容
发生这种情况时,如何显示404?我试过:
public function view ( $username )
{
$this->Profile->User->recursive = 2;
$profile = $this->Profile->User->find('first', array(
'conditions' => array('User.username' => $username)
));
if (empty($profile))
{
echo 'echo1';
throw new NotFoundException('No profile');
}
else {
echo 'echo2';
}
$this->set(compact('profile'));
}
但它没有显示404!我正在使用CakePHP2.0
这是因为它找到了用户,所以配置文件不是空的!那么如何检查配置文件是否为空?cakephp 2.0已经改变了显示错误的方式。现在你必须这么做。在您的情况下,而不是:
$this->cakeError('error404');
你必须做到:
throw new NotFoundException();
编辑:
另一方面,您可能希望在find查询中执行JOIN(和recursive-1),以便只在用户有配置文件时,集中查询以检索用户的信息
希望这有帮助cakephp 2.0改变了显示错误的方式。现在你必须这么做。在您的情况下,而不是:
$this->cakeError('error404');
if (empty($profile['Profile']['id'])) {
throw new NotFoundException();
}
你必须做到:
throw new NotFoundException();
编辑:
另一方面,您可能希望在find查询中执行JOIN(和recursive-1),以便只在用户有配置文件时,集中查询以检索用户的信息
希望这有帮助
if (empty($profile['Profile']['id'])) {
throw new NotFoundException();
}
我希望有更好的方法,但这是一个快速修复$profile
,正如您所说,在找到用户时,不会为空
我希望有更好的方法,但这是一个快速修复$profile
,正如您所说,在找到用户时不会为空。我仍然可以访问该页面(即使在生产模式下),您是否尝试在查找查询中使用联接?。。试着调试你的代码pr($profile)
此外,empty($profile)
将始终返回false,因为配置文件可能类似于array(“name=>”、'lastname'=>”…)
我仍然可以访问页面(即使在生产模式下),您是否尝试在查找查询中使用联接?。请尝试调试您的代码。pr($profile)
此外,empty($profile)
将始终返回false,因为配置文件可能类似于array(“name=>”,'lastname=>”,)
检查$profile的值,同时检查您是否确实输入了if语句并执行了cakeError。由于我没有IDE来检查您是否不需要IDE,因此如何进行检查。在if语句之前打印/回显$profile变量,然后在if语句中打印/回显类似“Hey I am in the if statement”的字符串。Okies似乎CakePHP没有将概要文件视为空,因为它正在查找用户。请参阅OP,即使不存在配置文件,我也会得到第二个回音。如何修复此问题?请检查$profile的值,并检查您是否确实输入了if语句并执行了cakeError。我如何检查,因为我没有IDE来检查您是否不需要IDE。在if语句之前打印/回显$profile变量,然后在if语句中打印/回显类似“Hey I am in the if statement”的字符串。Okies似乎CakePHP没有将概要文件视为空,因为它正在查找用户。请参阅OP,即使不存在配置文件,我也会得到第二个回音。我该如何解决这个问题?