разбиение шаблона (несколько $content)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
korih348
Сообщения: 1
Зарегистрирован: 2017.04.21, 17:31

разбиение шаблона (несколько $content)

Сообщение korih348 »

добрый день всем, столкнулся с проблемой.
имеется layouts в нем стандартный шаблон и имеется рендер экшенов $content.
как мне нормально разделить эти виды?
к примеру с лева у меня имеется блок авторизации в экшене index, где возвращается само собой рендер(index,[...]);
и мне нужно что после валидации формы этот блок менялся вместо с формы авторизации на информацию о пользователе (только в этом блоке, весь остальной контент должен оставаться на месте).
если при удачной валидации, ставить рендор на другой вид (где находится инфа о пользователе), то меняется всё содержимое сайта. потому что весь рендер подставляется в $content.
как мне разбить этот $content на несколько? где в одной части будет отвечать рендер за валидацию, второй за меню, третий за ноаости какие-нибудь и тд и тп. а не всё пихать в один $content. в данный момент имеется данная запись в контроллере:

Код: Выделить всё

public function actionIndex()
    {
    	$session = Yii::$app->session;

    		$auth = new AuthForm();

    		if($auth->load(Yii::$app->request->post()) && $auth->validate())
    		{
    			$login_auth = Html::encode($auth->login);
    			$password_auth = Html::encode($auth->password);

    			if($login_auth == 'admin' && $password_auth == 'admin')
    			{
    				$session->set('id', $login_auth);
    				return Yii::$app->response->redirect(['index.html']);
    			}
    			else
    			{
    				echo "auth error";
    			}
    		}
    		return $this->render('index',['auth' => $auth, 'session' => $session]);
    }
и в самой вьюшке index:

Код: Выделить всё

	use yii\helpers\Html;
	use yii\widgets\ActiveForm;

	$this->title = 'site';

	if(!$session->get('id'))
	{
	$form_auth = ActiveForm::begin();
	echo $form_auth->field($auth, 'login')->label('Логин');
	echo $form_auth->field($auth, 'password')->label('Пароль');
?>

<div class="form-group">
	<?= Html::submitButton('Войти', ['class' => 'btn btn-primary']); ?>
</div>

<?php
	ActiveForm::end();
	}
	else
	{
		echo $session->get('id');
	}
липить проверки на сессию и выдавать инфу в зависимости от валидации, это не камельфо (слишком много php кода во вьюшке)
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: разбиение шаблона (несколько $content)

Сообщение chesar »

Делаете два виджета, один с формой авторизации, второй с информацией о профиле. В шаблоне, проверяете, если гость выводите виджет авторизации, иначе профиль.
Ответить