Мне нужно получить исходный текст веб-страницы Yii2, который требует авторизации.
Например, есть некоторые сообщения, такие как mysite.pro/post/123, эти страницы доступны только для зарегистрированных пользователей. Я создал представление, которое может отображать сообщения в редакторе, поэтому я хочу получить код сообщения и попытаться получить его с помощью:
file_get_contents('http://mysite.pro/post/123',false),
Однако сервер возвращает мне код 403.
Есть ли способ получить страницу как текущий пользователь Yii2?
Это запрещено из-за безопасности. Но возможно отобразить конкретный контент из другого файла. Вот почему мы имеем renderPartial
вещь. Быстрый пример:
view_file.php:
<?php
// ...
echo Yii::$app->controller->renderPartial('special_content');
special_content.php:
<?php
if (!Yii::$app->user->isGuest) {
echo "I'm visible only to registered users. ";
} else {
echo "I'm visible only to guests. ";
}
echo "I'm visible to both types. ";
Если пользователь вошел в систему, он увидит: I'm visible only to registered users. And I'm visible to both types.
Иначе: I'm visible only to guests. And I'm visible to both types.
Такая вещь хороша, поскольку она дает гибкость при отображении контента из другого файла.
Краткое примечание: вы не должны использовать как $this->title
в вашем special_content.php потому что это перезапишет ваш view_file.php.
Других решений пока нет …