Задать вопрос
sakitaliev
@sakitaliev
Мастер костылей

Не отображает в Yii2 ActiveForm. В чем проблема?

Хотел сделать мини-админку и столкнулся с тем что на странице создания не отображает form field вообще. Пробовал делать в другом проекте но без изменений.
view:
<?
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
?>
<h1>Создать</h1>
<? $form = ActiveForm::begin(); ?>
<div class="row">
    <div class="col-md-6">
        <? $form->field($model,'title')->textInput()?>
    </div>
    <div class="col-md-6">
        <? $form->field($model,'text')->textarea()?>
    </div>
    <div class="col-md-6">
        <? $form->field($model,'image')->fileInput()?>
    </div>
    <div class="col-md-12">
        <? Html::submitButton('Создать', ['class'=>'btn btn-success']) ?>
    </div>
</div>
<? ActiveForm::end() ?>


Вот так в инспекторе:
f848a43b15134f0b88f9575590bce2ab.png

Контроллер и единственная модель на всякий:
controller:
namespace app\controllers;

use app\models\News;
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;

class SiteController extends Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['logout'],
                'rules' => [
                    [
                        'actions' => ['logout'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],
        ];
    }
    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }
    public function actionIndex()
    {
        $news = News::getNews();
        return $this->render('index', ['news'=>$news]);
    }

    public function actionNews($id)
    {
        $data = News::getOneNews($id);
        return $this->render('news',['data'=>$data,'id'=>$id]);
    }

    public function actionAdmin()
    {
        $list = News::getNews();
        return $this->render('admin',['list' => $list]);
    }

    public function actionCreate()
    {
        $model = new News();

        if ($_POST['News'])
        {
            $model->title = $_POST['News']['title'];
            $model->text = $_POST['News']['text'];
            $model->image = $_POST['News']['image'];
            if ($model->validate() && $model->save())
            {
                return $this->redirect(['admin']);
            }
        }
        return $this->render('create',['model'=>$model]);
    }
}


model:
<?php

namespace app\models;

use yii\db\ActiveRecord;

class News extends ActiveRecord
{


    public static function tableName()
    {
        return 'news';
    }

    public static function getNews()
    {
        $data = self::find()->all();
        return $data;
    }

    public static function getOneNews($id)
    {
        $data = self::find()
                ->where(['id' => $id])
                ->one();
        return $data;
    }
}
  • Вопрос задан
  • 803 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Доброй ночи.
Внимательней надо было смотреть примеры в документации)))
<?= $form->field($model,'title')->textInput()?>

p.s. И начинать надо с <?php, а не с <?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы