2016-01-02 1 views
0

У меня есть скрытое поле ввода в зрения в ActiveFormПолучение значение скрытого поля ввода установлен в использовании Javascript в Yii2

<?php $form = ActiveForm::begin(); ?> 

    <input type="file" id="i_file" name="uploadfile" value="" onchange="abc()"> 
    <?= $form->field($model, 'path')->hiddenInput() ?> 
    <div class="form-group"> 
     <?= Html::submitButton('submit', ['class' => 'btn btn-primary']) ?> 
    </div> 
<?php ActiveForm::end(); ?> 

Я устанавливаю это значение с помощью JavaScript, как показано ниже:

<script> 
function abc(){ 
    var tmppath = URL.createObjectURL(event.target.files[0]); 
    $("#taskreports-path").val(tmppath); 

alert(document.getElementById("taskreports-path").value); 
} 
</script> 

Предупреждение показывает, что значение установлено в поле успешно. Теперь я хочу, чтобы значение этого поля ввода в некоторой переменной PHP, как:

$var path = //<?= $form->field($model, 'path')->hiddenInput() ?> this field's value 

Как я могу сделать это в Yii2?

+0

Проверить эту ссылку http://stackoverflow.com/questions/9789283/how-to-get-javascript -variable-value-in-php – Bloodhound

+1

присвоение значения javascript - это операция клиента, а назначение переменной PHP - это действие на стороне сервера. Назначение операции переменному серверу не может быть выполнено Javascript в клинике. Если вы хотите присвоить значение переменной или offettuare, серверная сторона должна отправить ваши поля в форме или сделать ajax-вызов серверному модулю, который переносит this – scaisEdge

+1

Если ваш js заполняет форму, как и ожидалось, вы можете просто создать новое правило в своей модели, чтобы проверить значение атрибута. Если это не сработает для вас, можете ли вы лучше объяснить, какой сценарий здесь и что вы пытаетесь выполнить? – Clyff

ответ

0

В функции вашего контроллера вы можете получить значение скрытого ввода таким образом.

$post = Yii::$app->request->post(); 
$var = $post[$model->formName()]['path']; 
1

Поскольку вы используете модель для создания своей формы, было бы лучше загрузить данные, используя метод Model.

$model = new MyModel(); 
... 
if ($model->load(Yii::$app->request->post())) { 
    $model->path; //Your field's value should be loaded here 
} 

Обратите внимание, что атрибут «путь» должен быть указан в правилах модели, которые должны быть загружены методом «загрузка». Вот пример:

class MyModel extends ActiveRecord 
{ 
    ... 
    public function rules() 
    { 
     return [ 
      [['path'], 'string'], 
      ... 
     ]; 
    } 
} 

Вы также можете найти более подробную информацию о проверке пользовательского ввода здесь http://www.yiiframework.com/doc-2.0/guide-input-validation.html

Смежные вопросы