$(function () {
$('form').find('.cargo-data').on('change', function(){
var $form = $(this).parents('form');
console.log($(this).parents('form').attr('id'));
var input = $form.find('input');
$form.on('keyup', function(){
$(this).find('.b-cargoSizes input').each(function(){
var input = $(this);
$form.yiiActiveForm('add', {
id: input.attr('id'),
name: input.attr('name'),
container: '.field-' + input.attr('id'),
input: '#' + input.attr('id'),
error: '.help-block',
validateOnType: true,
validate: function(attribute, value, messages, deferred, $form) {
console.log(attribute + ' - ' + value);
yii.validation.required(value, messages, {message: "Заполнить обязательно!"});
yii.validation.number(value, messages, {
pattern: /^\s*\d+[,|.]*\d*\s*$/,
message: "Должно быть числом!"
});
}
});
})
})
});
});
$(function () {
$('form').find('.cargo-data').on('change', function(){
var $form = $(this).parents('form');
console.log($(this).parents('form').attr('id'));
var input = $form.find('input');
$form.on('keyup', function(){
$(this).find('.b-cargoSizes input').each(function(){
var input = $(this);
$form.yiiActiveForm('add', {
id: input.attr('id'),
name: input.attr('name'),
container: '.field-' + input.attr('id'),
input: '#' + input.attr('id'),
error: '.help-block',
validateOnType: true,
validate: function(attribute, value, messages, deferred, $form) {
console.log(attribute + ' - ' + value);
yii.validation.required(value, messages, {message: "Заполнить обязательно!"});
yii.validation.number(value, messages, {
pattern: /^\s*\d+[,|.]*\d*\s*$/,
message: "Должно быть числом!"
});
}
});
})
})
});
});
$("#save").on('click', function() {
$('.popup_overlay').show();
$('#login').show();
})
$('#login-form').on('submit', function(event) {
alert('test')
})
<?= $form->field($model, 'country_id')->dropDownList(ArrayHelper::map(Countries::getAllName(), 'id', 'name_ru'),
[
'prompt' => 'Выбрать страну...',
'onchange' => '
$.post(
"'.Url::toRoute('ajax/list').'",
{id : $(this).val()},
function(data){
$("select#regions").html(data).attr("disabled", false)
}
)
'
])
?>
<?= $form->field($model, 'region_id')->dropDownList(ArrayHelper::map(Regions::getAllName(), 'id', 'name_ru'),
[
'prompt' => 'Выбрать регион...',
'id' => 'regions',
'disabled' => $model->isNewRecord ? 'disabled' : false
])
?>
getAllName()
в модели может выглядеть так:public static function getAllName()
{
return self::findAll(['status' => self::STATUS_ACTIVE]);
}
public function actionList()
{
if(Yii::$app->request->isAjax)
{
$id = (int)Yii::$app->request->post('id');
$regions = Regions::find()
->where('status=:status',[':status' => Regions::STATUS_ACTIVE])
->andWhere('country_id=:id', [':id' => $id])
->orderBy('name_ru')
->all();
foreach($regions as $region){
$this->option .= '<option value="'.$region->id.'">'.$region->name_ru.'</option>';
}
}
return $this->option;
}
$('.form').find('select[name*=birth_region_id]').select2()
, Вы запускаете, скорей всего, не от kartik Select2, а совершенно другой. Посмотрите внимательно, возможно у Вас есть ещё один select2, который Вы и подключаете в скрипте.<?= $form->field($model->extra, 'birth_region_id')->widget(\kartik\select2\Select2::className(), []) ?>
public function actionCreate()
{
if($model->load(Yii::$app->request->post() && $model->save()){
// заполняете flash сообщение и делаете редирект
}
else{
return $this->render('create', ['model' => $model')
}
}
composer update
Можно ли сделать такую валидацию? Не нашёл подобных примеров в документации.
moonland/phpexcel
? app\models
$objInputType = \PHPExcel_IOFactory::identify($fileInput);
$objReader = \PHPExcel_IOFactory::createReader($objInputType);
class ProductsImportController extends Controller
{
public function actionImport()
{
$file = (object)Yii::$app->request->post('FlightsImport'); // получаете имя файла
$fileInput = Yii::getAlias('@webroot') . '/uploads/import_file/' . substr(strrchr($file->importfile, '/'), 1); // полный путь к файлу
/* читаете файл */
$objInputType = \PHPExcel_IOFactory::identify($fileInput);
$objReader = \PHPExcel_IOFactory::createReader($objInputType);
$objExcel = $objReader->load($fileInput);
$sheet = $objExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
for($row = 1; $row <= $highestRow; $row++){
if($row == 1) continue;
$rowData = $sheet->rangeToArray('A'.$row.':'.$highestColumn.$row, null, true, false);
// print_r($rowData);
// объект модели, которую надо заполнить
$flights = new FlightsImport();
// заполняете нужные атрибуты
$flights->title = FlightsImport::findAirlineId($rowData[0][3]); // название компании
$flights->save(false);
}
}
}
$rowData[0][3]
сделайте в методе print_r($rowData)
и увидите, что и какие данные Вы получили из файла. controller/action
'post' => 'post/index',
// возможные действия в PostController
'post/<_a:\w+>' => 'post/<_a>'