есть модель
Products
со своими
rules
от нее наследуется модель
Carts
сообствено вот её код
Как правильно сделать валидацию?
<?php
namespace frontend\models;
use common\models\Products;
use common\models\Price;
class Carts extends Products
{
public $price;
public function rules()
{
return [
[['price'], 'required'],
[['price'], 'integer'],
];
}
public function getPrise()
{
return $this->hasMany(Price::className(), ['products_id' => 'id']);
}
}
после этого в контролере я её получаю таким образом
$recomended = Carts::find()->where('recomended=1')->with('images','price')->all();
а в представлении следующим образом я его передаю в виджет Cart
<?php foreach($recomended as $rec){ Cart::widget(['model'=>$rec])} ?>
вот собственно сам виджет
<?php
namespace frontend\widgets\cart;
use Yii;
use yii\base\Widget;
use common\models\Product;
use common\models\Price;
use frontend\models\CartPosition;
use yz\shoppingcart\ShoppingCart;
use yii\web\Controller;
class Cart extends Widget
{
public $model;
public $idCountry;
public function init()
{
parent::init();
}
public function run()
{
$product=$this->model;
$idCountry=$this->idCountry;
/*$price = array_filter($product->price, function($item)use($idCountry) {
return $item->countryid == $idCountry;
});*/
$post=Yii::$app->request->post();
if(Yii::$app->request->isPjax){
$position = Product::findOne($post['productId']);
$prise= Price::find()->where("price=".$post['Product']['price'])->andWhere("product_id=".$post['productId'])->one();
$prises=$prise->price;
$volume=$prise->volume;
$country=$prise->countryid;
$cartPosition = new CartPosition($position->id, $prises, $country, $volume);
if ($position) {
\Yii::$app->cart->put($cartPosition, 1);
if (Yii::$app->request->isPjax) {
\Yii::$app->controller->renderPartial('_success');
/*return $this->render('html',[
'model'=>$product,
'price'=>$price
]);*/
}
}
}else{
return $this->render('html',[
'model'=>$product,
//'price'=>$price,
'var'=>$idCountry
]);
}
}
}
и его вьюха
<?php
use yii\widgets\ActiveForm;
use yii\helpers\Html;
use yii\helpers\ArrayHelper;
use yii\widgets\Pjax;
Pjax::begin();
$form = ActiveForm::begin(['options' => ['class'=>'customsearch','data-pjax' => true]]);
echo Html::activedropDownList( $model,'price', ArrayHelper::map($model->prise, 'price','volumeName'),['prompt' =>
<?php ActiveForm::end();?>
и теперь при не выбранном поле
price
там на самом деле стоит скрипт который преобразует
select
в ряд ссылок с конечным текстовым инпутом но импут имеет атрибут
name='Carts[pice]'
так что наверное лучше сказать при пустом
value
текстового инпута валидация не проходит не объясните что я делаю не так.