Первое знакомство. Работа с формами

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
ush-webdev
Сообщения: 32
Зарегистрирован: 2016.01.24, 23:49

Первое знакомство. Работа с формами

Сообщение ush-webdev »

Здравствуйте, уважаемые! Больно о таком писать, но не могу разобраться с простейшей формой.
В общем делаю всё по гайду http://yiiframework.domain-na.me/doc/gu ... tart-forms единственное отличие это нужно сделать форму не yii\widgets\ActiveForm , а с помощью yii\helpers\Html.

Сама форма:

<?= Html::beginForm(['site/entry'], 'post') ?>

<!-- тип, название поля ввода, установленное в поле значение, атрибуты поля ввода -->
<?= Html::input('text', 'name', Yii::$app->request->post('name') ?>

<?= Html::input('text', 'name', Yii::$app->request->post('name') ?>

<?= Html::submitButton('Отправить', ['class' => 'submit']) ?>

<?= Html::endForm() ?>

Контроллер:

public function actionEntry()
{
$molel = new EntryForm();

if ($model->load(Yii::$app->request->post()) && $model->validate()){
// Данные в $model удачно проверены

// делаем что-то полезное с $model

return $this->render('entry-confirm', ['model' => $model]);
} else {
//либо страница отображается первый раз, либо есть ошибка в данных
return $this->render('entry', ['model' => $model]);
}
}

В итоге: фатал еррор:

Call to a member function load() on null+

Собственно вопрос:

Как прикрутить такую форму к контроллеру, что бы всё работало? Гайды, оффдокументацию читаю уже второй день, ещё больше запутался.
Аватара пользователя
TranceSmile
Сообщения: 562
Зарегистрирован: 2011.06.27, 19:04
Откуда: Украина
Контактная информация:

Re: Первое знакомство. Работа с формами

Сообщение TranceSmile »

А чем Вас не устраивает ActiveForm?!

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

echo Html::activeInput($model, 'name');
 
Изображение
ush-webdev
Сообщения: 32
Зарегистрирован: 2016.01.24, 23:49

Re: Первое знакомство. Работа с формами

Сообщение ush-webdev »

Спасибо за вопрос).В том и дело, что не устраивает. Хочу подключить свою вёрстку формы к фреймворку и столкнулся с нежелательными трудностями, а именно ActiveForm генерирует много кода, вот пример одного поля:
<form id="w0" action="/index.php?r=site%2Fentry" method="post">
<input type="hidden" name="_csrf" value="R2gwWnozbmcJAVgzPlQ8Jhc8CWw0fS8zNhp2Yh1aKD0pRUAZS1giFA==">
<div class="form-group field-entryform-name required">
<label class="control-label" for="entryform-name">Name</label>
<input type="text" id="entryform-name" class="form-control" name="EntryForm[name]">

<div class="help-block"></div>
Понимаете в чём проблема? В лишних divах, classах и прочем. Я знаю на это есть стандартный ответ- мол это так надо, полезно, нужно разобраться и будет счастье, но мне полезно это обычная форма. Если можно даже без хелперов, простой html код научиться подключать и я буду всем Вам очень благодарен.
Rom
Сообщения: 81
Зарегистрирован: 2014.12.22, 11:56

Re: Первое знакомство. Работа с формами

Сообщение Rom »

Ну эти дивы и классы необходимы для фреймворка http://getbootstrap.com/css/#forms

Вам предложили использовать конструкцию Html::activeInput($type, $model, $attribute, $options = []) как раз она рендерит поля без класов bootstrap.
ush-webdev
Сообщения: 32
Зарегистрирован: 2016.01.24, 23:49

Re: Первое знакомство. Работа с формами

Сообщение ush-webdev »

Да, постараюсь объяснить чего я хочу на самом деле. Послушал умного человека и взял один лишь чистый фреймворк yii2, положил в папку vendor, потом в yiisoft ... Подключил это в простом indexном файле(в котором планирую ещё и конфиг сделать) добавил пару папок и получилось у меня супер-приложение о котором я давно мечтал. Конечно есть ещё зависимости, которые тянуться, но до них я ещё доберусь. На данном этапе проблема возникла именно с подключением формы, так как bootstrapa у меня нету и в помине все эти классы, дивы мне только мешают подключить свою вёрстку и я хочу от них избавиться каким либо образом.
Возможно возникнет вопрос нафига это мне? Для изучения, чем меньше компонентов тем проще разобраться. Composer не предлагать))
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Первое знакомство. Работа с формами

Сообщение maleks »

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

$molel = new EntryForm(); 
model

, ну и выше сказали, что чтобы ->load() знал откуда грузить нужно эл-ты формы в свое пространство имени запихнуть, т.е. обычно имена эл-тов типа Model[email], хотя load можно и настроить 2-ым параметром да или вообще не использовать. (active эл-ты как раз и созданы чтобы все это разрулить, используйте)
Yii2 universal module sceleton - for basic and advanced templates
ush-webdev
Сообщения: 32
Зарегистрирован: 2016.01.24, 23:49

Re: Первое знакомство. Работа с формами

Сообщение ush-webdev »

Да, действительно, с использованием active элементов проблема решается более чем элегантно. Спасибо. Вопросов нет.
Ответить