common\models\Post Object ( [cat] => [file] => [time_create] => [datefarsi] => [tag] => [_attributes:yii\db\BaseActiveRecord:private] => Array ( [id] => 980 [title] => render several models [body] =>

چطور با یک فرم چند مدل را رندر کنیم

 فرض کنیم که میخواهیم علاوه بر ساخت یک مدل کاربر هم ثبت نام کند

فرم ما به این شکل خواهد بود

    field($model, 'name')->textInput(['maxlength' => true]) ?>
    field($model, 'file')->fileInput() ?>
   
    user->identity->id) { ?>
      
            field($user, 'name')->textInput() ?>
            field($user, 'username')->textInput() ?>
            field($user, 'password_hash')->textInput() ?>
   
       
   
    'btn btn-success']) ?>
   
 

در این فرم دو مدل داریم ($model, $user)

در کنترلر و فرم باید این دو مدل رو بفرستیم به صورت زیر

در کنترلر

return $this->render('create', [
                    'model' => $model,
                     'user'=>$user,
            ]);

در فرم

 render('_form', [
        'model' => $model,
        'user' => $user,
    ]) ?>
 

[date] => 2019-12-24 07:10:39 [file_path] => [thumb_nail] => uploads/AWTiVpjrMsAMsNT.png [summery] => در یک فرم چند مدل را رندر کنیم [pic] => [link] => [slug] => render-several-models [author_id] => 9 [author] => ) [_oldAttributes:yii\db\BaseActiveRecord:private] => Array ( [id] => 980 [title] => render several models [body] =>

چطور با یک فرم چند مدل را رندر کنیم

 فرض کنیم که میخواهیم علاوه بر ساخت یک مدل کاربر هم ثبت نام کند

فرم ما به این شکل خواهد بود

    field($model, 'name')->textInput(['maxlength' => true]) ?>
    field($model, 'file')->fileInput() ?>
   
    user->identity->id) { ?>
      
            field($user, 'name')->textInput() ?>
            field($user, 'username')->textInput() ?>
            field($user, 'password_hash')->textInput() ?>
   
       
   
    'btn btn-success']) ?>
   
 

در این فرم دو مدل داریم ($model, $user)

در کنترلر و فرم باید این دو مدل رو بفرستیم به صورت زیر

در کنترلر

return $this->render('create', [
                    'model' => $model,
                     'user'=>$user,
            ]);

در فرم

 render('_form', [
        'model' => $model,
        'user' => $user,
    ]) ?>
 

[date] => 2019-12-24 07:10:39 [file_path] => [thumb_nail] => uploads/AWTiVpjrMsAMsNT.png [summery] => در یک فرم چند مدل را رندر کنیم [pic] => [link] => [slug] => render-several-models [author_id] => 9 [author] => ) [_related:yii\db\BaseActiveRecord:private] => Array ( ) [_relationsDependencies:yii\db\BaseActiveRecord:private] => Array ( ) [_errors:yii\base\Model:private] => [_validators:yii\base\Model:private] => [_scenario:yii\base\Model:private] => default [_events:yii\base\Component:private] => Array ( ) [_eventWildcards:yii\base\Component:private] => Array ( ) [_behaviors:yii\base\Component:private] => Array ( ) )
An Error occurred while handling another error:
yii\web\HeadersAlreadySentException: Headers already sent in /home/avishost/public_html/frontend/controllers/PostController.php on line 75. in /home/avishost/public_html/vendor/yiisoft/yii2/web/Response.php:366
Stack trace:
#0 /home/avishost/public_html/vendor/yiisoft/yii2/web/Response.php(339): yii\web\Response->sendHeaders()
#1 /home/avishost/public_html/vendor/yiisoft/yii2/web/ErrorHandler.php(136): yii\web\Response->send()
#2 /home/avishost/public_html/vendor/yiisoft/yii2/base/ErrorHandler.php(123): yii\web\ErrorHandler->renderException(Object(yii\base\ErrorException))
#3 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\base\ErrorException))
#4 {main}
Previous exception:
yii\base\ErrorException: session_set_cookie_params(): Cannot change session cookie parameters when headers already sent in /home/avishost/public_html/vendor/yiisoft/yii2/web/Session.php:399
Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleError(2, 'session_set_coo...', '/home/avishost/...', 399, Array)
#1 /home/avishost/public_html/vendor/yiisoft/yii2/web/Session.php(399): session_set_cookie_params(Array)
#2 /home/avishost/public_html/vendor/yiisoft/yii2/web/Session.php(135): yii\web\Session->setCookieParamsInternal()
#3 /home/avishost/public_html/vendor/yiisoft/yii2/web/Session.php(630): yii\web\Session->open()
#4 /home/avishost/public_html/vendor/yiisoft/yii2/web/Session.php(769): yii\web\Session->get('__flash', Array)
#5 /home/avishost/public_html/common/widgets/Alert.php(51): yii\web\Session->getAllFlashes()
#6 /home/avishost/public_html/vendor/yiisoft/yii2/base/BaseObject.php(109): common\widgets\Alert->init()
#7 [internal function]: yii\base\BaseObject->__construct(Array)
#8 /home/avishost/public_html/vendor/yiisoft/yii2/di/Container.php(392): ReflectionClass->newInstanceArgs(Array)
#9 /home/avishost/public_html/vendor/yiisoft/yii2/di/Container.php(159): yii\di\Container->build('common\\widgets\\...', Array, Array)
#10 /home/avishost/public_html/vendor/yiisoft/yii2/BaseYii.php(365): yii\di\Container->get('common\\widgets\\...', Array, Array)
#11 /home/avishost/public_html/vendor/yiisoft/yii2/base/Widget.php(137): yii\BaseYii::createObject(Array)
#12 /home/avishost/public_html/frontend/views/layouts/main.php(294): yii\base\Widget::widget()
#13 /home/avishost/public_html/vendor/yiisoft/yii2/base/View.php(348): require('/home/avishost/...')
#14 /home/avishost/public_html/vendor/yiisoft/yii2/base/View.php(257): yii\base\View->renderPhpFile('/home/avishost/...', Array)
#15 /home/avishost/public_html/vendor/yiisoft/yii2/base/Controller.php(401): yii\base\View->renderFile('/home/avishost/...', Array, Object(frontend\controllers\PostController))
#16 /home/avishost/public_html/vendor/yiisoft/yii2/base/Controller.php(387): yii\base\Controller->renderContent('\n<!--end loadin...')
#17 /home/avishost/public_html/frontend/controllers/PostController.php(84): yii\base\Controller->render('view', Array)
#18 [internal function]: frontend\controllers\PostController->actionView('980')
#19 /home/avishost/public_html/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#20 /home/avishost/public_html/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#21 /home/avishost/public_html/vendor/yiisoft/yii2/base/Module.php(528): yii\base\Controller->runAction('view', Array)
#22 /home/avishost/public_html/vendor/yiisoft/yii2/web/Application.php(103): yii\base\Module->runAction('post/view', Array)
#23 /home/avishost/public_html/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#24 /home/avishost/public_html/frontend/web/index.php(21): yii\base\Application->run()
#25 {main}