
Константин
12.07.2018
17:45:54
Все
Профит

Nuriddin
12.07.2018
17:47:17

Константин
12.07.2018
17:48:04

Google

Константин
12.07.2018
17:48:35
По идее он вводит с помощью маски мобильный телефон
Там будет сложно ошибиться

Nuriddin
12.07.2018
17:50:05

Константин
12.07.2018
17:50:06
Но я все равно раскидаю по экшенам нормально
Просто сейчас для тестов удобно что меня перекидывает с формы на форму

Konstantin
12.07.2018
19:56:43
docker run -it --name nginx -d richarvey/nginx-php-fpm -v /home/konstantin/Документы/docker:/var/www/html
чо не так то?
Exited (0) 8 seconds ago
блеаа местами поменять
полчаса искал в инете уже отчаился понять

Mikhail
12.07.2018
21:23:32
юзай docker-compose и будет проще)

Dmitry ★
13.07.2018
05:05:56

Nuriddin
13.07.2018
05:26:25
Привет есть вопрос
как работает load фукция, проковырял но не очень понял

Google

Nuriddin
13.07.2018
05:27:28
проблема такая:
$form = new ProductForm();
if ($form->load(Yii::$app->request->post())) {
try {
var_dump(Yii::$app->request->post()); здесь все данные приходит
var_dump($form); здесь все аттрибуты null
как понять это
Где проблема

Сардор
13.07.2018
05:35:29


Nuriddin
13.07.2018
05:41:29
object(backend\models\ProductForm)#217 (23) {
["company_id"]=>
NULL
["brand_id"]=>
NULL
["user_id"]=>
NULL
["name_uz"]=>
NULL
["name_ru"]=>
NULL
["price_old"]=>
NULL
["price_new"]=>
NULL
["currency_id"]=>
NULL
["total_count"]=>
NULL
["min_count"]=>
NULL
["additional"]=>
NULL
["slug"]=>
NULL
["meta"]=>
object(backend\models\MetaForm)#218 (9) {
["title"]=>
NULL
["description"]=>
NULL
["keywords"]=>
NULL
["_errors":"yii\base\Model":private]=>
NULL
["_validators":"yii\base\Model":private]=>
NULL
["_scenario":"yii\base\Model":private]=>
string(7) "default"
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["photos"]=>
object(backend\models\ProductPhotosForm)#220 (7) {
["files"]=>
NULL
["_errors":"yii\base\Model":private]=>
NULL
["_validators":"yii\base\Model":private]=>
NULL
["_scenario":"yii\base\Model":private]=>
string(7) "default"
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["categories"]=>
object(backend\models\ProductCategoriesForm)#219 (8) {
["main"]=>
NULL
["others"]=>
array(0) {
}
["_errors":"yii\base\Model":private]=>
NULL
["_validators":"yii\base\Model":private]=>
NULL
["_scenario":"yii\base\Model":private]=>
string(7) "default"
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["options"]=>
NULL
["tags"]=>
array(0) {
}
["_errors":"yii\base\Model":private]=>
NULL
["_validators":"yii\base\Model":private]=>
object(ArrayObject)#222 (1) {
["storage":"ArrayObject":private]=>
array(0) {
}
}
["_scenario":"yii\base\Model":private]=>
string(7) "default"
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}


Сардор
13.07.2018
05:45:20


Nuriddin
13.07.2018
05:45:52
array(5) {
["_csrf"]=>
string(88) "cZwC5dtde49qUg_8VRTVhlLE-_7ALLK1XWs946SufyMfzljXnGop0AQGXbADToHFPJe5tIcV-cMCLU3R_Ok9ag=="
["ProductForm"]=>
array(12) {
["name_uz"]=>
string(3) "son"
["name_ru"]=>
string(7) "сон "
["brand_id"]=>
string(1) "2"
["slug"]=>
string(4) "test"
["user_id"]=>
string(1) "6"
["additional"]=>
string(13) "
test
"
["price_old"]=>
string(3) "123"
["price_new"]=>
string(3) "123"
["currency_id"]=>
string(1) "1"
["total_count"]=>
string(3) "132"
["min_count"]=>
string(1) "1"
["tags"]=>
array(2) {
[0]=>
string(1) "s"
[1]=>
string(3) "sfa"
}
}
["ProductCategoriesForm"]=>
array(2) {
["main"]=>
string(1) "2"
["others"]=>
string(0) ""
}
["MetaForm"]=>
array(3) {
["title"]=>
string(4) "test"
["description"]=>
string(4) "test"
["keywords"]=>
string(4) "test"
}
["ProductPhotosForm"]=>
array(1) {
["files"]=>
array(1) {
[0]=>
string(0) ""
}
}
}


Ad.x ??
13.07.2018
05:47:13


Nuriddin
13.07.2018
05:47:32

Ad.x ??
13.07.2018
05:47:43
это не код
нужен контроллер, вью и форма
как отправляешь

Сардор
13.07.2018
05:48:45
$form->load() принимает formName, можно попробовать указать самому formName

Ad.x ??
13.07.2018
05:49:16
предлагаю просто игнорить такие вопросы. подзаебало реально
привыкли к вангам, понимаешь

Максим
13.07.2018
05:49:58

Google

Yet Another Stats
13.07.2018
05:51:01
Карма Ad.x ?? стала 51

Сардор
13.07.2018
05:51:22
просто когда задают такие вопросы - нужно правильное направление задам им, решение пусть сами находят. Многие привыкли тупо что то спрашивать и получать ответ/решение на этот вопрос.

Ad.x ??
13.07.2018
05:52:53
сорян, откуда попало файлы принципиально не качаю )
https://pastebin.com/
сюда экшен контроллера, вьюху и форму давай

Nuriddin
13.07.2018
05:54:51

Максим
13.07.2018
05:54:56

Ad.x ??
13.07.2018
05:55:14


Nuriddin
13.07.2018
05:56:17
<?php $form = ActiveForm::begin([
'options' => ['enctype' => 'multipart/form-data']
]); ?>
<style>
label {
display: block;
}
</style>
<div class="panel panel-default">
<div class="panel-heading">Common</div>
<div class="panel-body">
<div class="row">
<div class="col-md-6">
<?= $form->field($model, 'name_uz')->textInput(['maxlength' => true]) ?>
</div>
<div class="col-md-6">
<?= $form->field($model, 'company_id')->dropDownList($model->companyList()) ?>
</div>
<div class="col-md-6">
<?= $form->field($model, 'name_ru')->textInput(['maxlength' => true]) ?>
</div>
<div class="col-md-6">
<?= $form->field($model, 'brand_id')->dropDownList($model->brandsList()) ?>
</div>
<div class="col-md-6">
<?= $form->field($model, 'slug')->textInput(['maxlength' => true]) ?>
</div>
<div class="col-md-6">
<?= $form->field($model, 'user_id')->dropDownList($model->usersList()) ?>
</div>
</div>
<?= $form->field($model, 'additional')->widget(CKEditor::className()) ?>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">Price</div>
<div class="panel-body">
<?= $form->field($model, 'price_old')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'price_new')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'currency_id')->dropDownList($model->currencyList()) ?>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">Count ogranichenie</div>
<div class="panel-body">
<?= $form->field($model, 'total_count')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'min_count')->textInput(['maxlength' => true]) ?>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">Categories</div>
<div class="panel-body">
<?= $form->field($model->categories, 'main')->dropDownList($model->categories->categoriesList(), ['prompt' => '']) ?>
<?= $form->field($model->categories, 'others')->checkboxList($model->categories->categoriesList()) ?>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">Tags</div>
<div class="panel-body">
<?= $form->field($model, 'tags')->widget(Select2::classname(), [
'data' => $model->tagsList(),
'options' => ['placeholder' => 'Select a tags...', 'multiple' => true],
'pluginOptions' => [
'tags' => true,
'maximumInputLength' => 10
],
]);
?>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">SEO</div>
<div class="panel-body">
<?= $form->field($model->meta, 'title')->textInput() ?>
<?= $form->field($model->meta, 'description')->textarea(['rows' => 2]) ?>
<?= $form->field($model->meta, 'keywords')->textInput() ?>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Photos</div>
<div class="panel-body">
<?= $form->field($model->photos, 'files[]')->widget(FileInput::class, [
'options' => [
'accept' => 'image/*',
'multiple' => true,
]
]) ?>
</div>
</div>
<div class="form-group">
<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
_form file


Максим
13.07.2018
05:57:54

Ad.x ??
13.07.2018
05:58:28
экшен контроллера нужен )

Сардор
13.07.2018
05:58:31
В $model экземпляр какого класса лежит?
вроде это
["ProductForm"]=>
array(12) {
["name_uz"]=>
string(3) "son"
["name_ru"]=>
string(7) "сон "
["brand_id"]=>
string(1) "2"
["slug"]=>
string(4) "test"
["user_id"]=>
string(1) "6"


Nuriddin
13.07.2018
05:58:46
namespace backend\models;
class ProductForm extends Model
{
public $company_id;
public $brand_id;
public $user_id;
public $name_uz;
public $name_ru;
public $price_old;
public $price_new;
public $currency_id;
public $total_count;
public $min_count;
public $additional;
public $slug;
public $meta;
public $photos;
public $categories;
public $options;
public $tags;
public function __construct($config = [])
{
$this->meta = new MetaForm();
$this->categories = new ProductCategoriesForm();
$this->photos = new ProductPhotosForm();
$this->tags = [];
parent::__construct($config);
}
public function brandsList()
{
return ArrayHelper::map(Brands::find()->orderBy('name')->asArray()->all(), 'id', 'name');
}
public function categoryList()
{
return ArrayHelper::map(Categories::find()->orderBy('name_ru')->asArray()->all(), 'id', 'name_ru');
}
public function companyList()
{
return ArrayHelper::map(Companies::find()->orderBy('company_name_ru')->asArray()->all(), 'id', 'company_name_ru');
}
public function currencyList()
{
return ArrayHelper::map(Currencies::find()->orderBy('name')->asArray()->all(), 'id', 'name');
}
public function tagsList()
{
return ArrayHelper::map(Tags::find()->orderBy('name')->asArray()->all(), 'id', 'name');
}
public function usersList()
{
return ArrayHelper::map(User::find()->orderBy('username')->asArray()->all(), 'id', 'username');
}
}


Максим
13.07.2018
05:59:50
namespace backend\models;
class ProductForm extends Model
{
public $company_id;
public $brand_id;
public $user_id;
public $name_uz;
public $name_ru;
public $price_old;
public $price_new;
public $currency_id;
public $total_count;
public $min_count;
public $additional;
public $slug;
public $meta;
public $photos;
public $categories;
public $options;
public $tags;
public function __construct($config = [])
{
$this->meta = new MetaForm();
$this->categories = new ProductCategoriesForm();
$this->photos = new ProductPhotosForm();
$this->tags = [];
parent::__construct($config);
}
public function brandsList()
{
return ArrayHelper::map(Brands::find()->orderBy('name')->asArray()->all(), 'id', 'name');
}
public function categoryList()
{
return ArrayHelper::map(Categories::find()->orderBy('name_ru')->asArray()->all(), 'id', 'name_ru');
}
public function companyList()
{
return ArrayHelper::map(Companies::find()->orderBy('company_name_ru')->asArray()->all(), 'id', 'company_name_ru');
}
public function currencyList()
{
return ArrayHelper::map(Currencies::find()->orderBy('name')->asArray()->all(), 'id', 'name');
}
public function tagsList()
{
return ArrayHelper::map(Tags::find()->orderBy('name')->asArray()->all(), 'id', 'name');
}
public function usersList()
{
return ArrayHelper::map(User::find()->orderBy('username')->asArray()->all(), 'id', 'username');
}
}
Кидай на пастбин, тебе ссылку выше дали, неудобно в чате такое читать


Nuriddin
13.07.2018
05:59:55
экшен контроллера нужен )
<?php
namespace backend\controllers;
use backend\models\ProductForm;
use common\services\ProductManageService;
use Yii;
use common\models\Products;
use app\models\ProductsSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
/**
* ProductsController implements the CRUD actions for Products model.
*/
class ProductsController extends Controller
{
/**
* Creates a new Products model.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/
public function actionCreate()
{
$form = new ProductForm();
if ($form->load(Yii::$app->request->post())) {
try {
$product = $this->service->create($form);
return $this->redirect(['view', 'id' => $product->id]);
} catch (\DomainException $e) {
Yii::$app->errorHandler->logException($e);
Yii::$app->session->setFlash('error', $e->getMessage());
}
}
return $this->render('create', [
'model' => $form,
]);
}
}
https://pastebin.com/FJpWcuMx
ProductController.php
https://pastebin.com/1t09bCYW
_form.php

Google

Nuriddin
13.07.2018
06:02:48
https://pastebin.com/jKrHhz2A
ProductForm.php


Сардор
13.07.2018
06:02:58
namespace backend\models;
class ProductForm extends Model
{
public $company_id;
public $brand_id;
public $user_id;
public $name_uz;
public $name_ru;
public $price_old;
public $price_new;
public $currency_id;
public $total_count;
public $min_count;
public $additional;
public $slug;
public $meta;
public $photos;
public $categories;
public $options;
public $tags;
public function __construct($config = [])
{
$this->meta = new MetaForm();
$this->categories = new ProductCategoriesForm();
$this->photos = new ProductPhotosForm();
$this->tags = [];
parent::__construct($config);
}
public function brandsList()
{
return ArrayHelper::map(Brands::find()->orderBy('name')->asArray()->all(), 'id', 'name');
}
public function categoryList()
{
return ArrayHelper::map(Categories::find()->orderBy('name_ru')->asArray()->all(), 'id', 'name_ru');
}
public function companyList()
{
return ArrayHelper::map(Companies::find()->orderBy('company_name_ru')->asArray()->all(), 'id', 'company_name_ru');
}
public function currencyList()
{
return ArrayHelper::map(Currencies::find()->orderBy('name')->asArray()->all(), 'id', 'name');
}
public function tagsList()
{
return ArrayHelper::map(Tags::find()->orderBy('name')->asArray()->all(), 'id', 'name');
}
public function usersList()
{
return ArrayHelper::map(User::find()->orderBy('username')->asArray()->all(), 'id', 'username');
}
}
у атрибутов нету rules


Максим
13.07.2018
06:03:03
красава) теперь будем разбираться

Nuriddin
13.07.2018
06:03:35

Сардор
13.07.2018
06:03:47

Nuriddin
13.07.2018
06:03:48

Ad.x ??
13.07.2018
06:05:09

Admin
ERROR: S client not available

Like
13.07.2018
06:05:23
Ебать
Нахуй он код сюда кидает блять
У меня одна мессага на весь экран блять

Максим
13.07.2018
06:05:43

Like
13.07.2018
06:05:54
Дык я без конкретики, ну)

Ad.x ??
13.07.2018
06:05:56

Like
13.07.2018
06:06:03
Так что молчи

Сардор
13.07.2018
06:06:11
вот что в итоге делает load метод
public function setAttributes($values, $safeOnly = true)
{
if (is_array($values)) {
$attributes = array_flip($safeOnly ? $this->safeAttributes() : $this->attributes());
foreach ($values as $name => $value) {
if (isset($attributes[$name])) {
$this->$name = $value;
} elseif ($safeOnly) {
$this->onUnsafeAttribute($name, $value);
}
}
}
}

Ad.x ??
13.07.2018
06:06:13

Like
13.07.2018
06:06:13
Че угодно > пхп
Да пиздец блять

Google

Like
13.07.2018
06:06:26
-25% экрана
Могееет!

Ad.x ??
13.07.2018
06:07:09

Like
13.07.2018
06:07:13
Пиздец, заснул в 4 утра, встал в 7
Жизнь охуена!
АХХАХАХАХАХХАХ БЛЯТЬ
Ты ебанулся головой?

Максим
13.07.2018
06:07:25
https://phptime.ru/yii/perevod-pravilo-validacii-safe-dlya-teh-kto-v-tanke.html начиная с "Почему массовое присваивание иногда не работает?"

Ad.x ??
13.07.2018
06:07:27
дай угадаю: да похуй он не нужен )

Like
13.07.2018
06:07:33
Flow > пхпшная дичь которая покрывает даже не все примитивы

Максим
13.07.2018
06:08:03
Че угодно > пхп
как ты в жс без обязательных $ в начале переменной и точки с запятой в конце выражения себя чувствуешь?

Like
13.07.2018
06:08:10
Я ж говорю
Жизнь охуена!
Мне vscode подставляет ; в конце)

Максим
13.07.2018
06:08:42

Ad.x ??
13.07.2018
06:08:52

Like
13.07.2018
06:08:52
Не гавкай, пидр) ♥️