Если у пользователя нет профиля, покажите 404 - PullRequest
0 голосов
/ 30 декабря 2011

В моем приложении пользователь может иметь или не иметь профиль. Примером может быть:

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 не имеет соответствующего содержимого в таблице профилей.

Как мне показать 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! Я использую CakePHP 2.0.

Это потому, что он находит пользователя, поэтому профиль не пуст! Как мне проверить, что профиль пуст?

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

cakephp 2.0 изменил способ отображения ошибок. Теперь вам нужно сгенерировать исключение . В вашем случае вместо:

$this->cakeError('error404');

Вы должны сделать:

throw new NotFoundException();

Отредактировано: С другой стороны, вам нужно выполнить JOIN в вашем поисковом запросе (и рекурсивно -1), чтобы запрос был получен ТОЛЬКО в том случае, если у него есть профиль.

Надеюсь, это поможет

1 голос
/ 30 декабря 2011
if (empty($profile['Profile']['id'])) {
    throw new NotFoundException();
}

Я ожидаю, что есть лучшие способы сделать это, но это быстрое решение. $profile, как вы сказали, не будет пустым, так как user найден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...