我怎样才能获得form-> field()值?

时间:2015-05-15 13:59:58

标签: forms field yii2

简而言之,我有以下代码:

<?= $form->field( $isntmodel, 'id')->textInput() ?>
<?= Html::a('<i class="mdi-action-done"></i>', ['add-item', 'id' => ???], [
    'class' => 'btn-btn-add pull-right',
]) ?>

这段代码错了。

因此。我需要得到用户输入的值。然后将其设置为???

$form->field()必须$model, $attribute, $options = []。如何编写不使用$ model和$ attribute的字段?它不是表格列,我只需要获取值并将其设置为???

我试试

  public function actionAddItem($id) {
    $model = $this->$model;
    $product = Product::findOne($id);
    $orderItem = new OrderItem();
    $orderItem->order_id = $model->id;
    $orderItem->title = $product->title;
    $orderItem->price = $product->getPrice();
    $orderItem->product_id = $product->id;
    $orderItem->save();
    return $this->redirect(['index']);
  }

但它引发了异常。在$model = $this->$model行,我不知道如何从字段提交ID到链接

如果我将其添加到浏览器http://yii2-shop/backend/web/order/add-item?modelid=13&id=1&quantity=4

中,则添加项目是有效的

UPD

现在我的表单看起来像

<?php $form = ActiveForm::begin([]); ?>
    <tr>
        <td><?= $n ?></td>
        <td><?= $form->field( $model, 'newOrderItemId')->textInput()->label(false) ?></td>
        <td></td>
        <td></td>
        <td class="text-center"><?= $form->field( $model, 'newOrderItemQuantity')->textInput()->label(false) ?></td>
        <td>
            <?= Html::a('<i class="mdi-action-done"></i>', [
                '/order/add-item',
                'modelid' => $model->id,
                'id' => $model->newOrderItemId,
                'quantity' => $model->newOrderItemQuantity,
            ], [
              'class' => 'btn btn-add pull-right',
              'data-toggle'=>'tooltip' ,
              'data-placement'=>'bottom',
              'title'=>'Добавить товар',
            ]) ?>
        </td>
    </tr>
<?php ActiveForm::end(); ?>

add-item看起来像

public function actionAddItem($modelid, $id, $quantity) {
    $model = $this->findModel($modelid);
    $product = Product::findOne($id);
    $orderItem = new OrderItem();
    $orderItem->order_id = $model->id;
    $orderItem->title = $product->title;
    $orderItem->price = $product->getPrice();
    $orderItem->product_id = $product->id;
    $orderItem->quantity = $quantity;
    $orderItem->save();
    return $this->redirect(['index']);
}

newOrderItemIdnewOrderItemQuantity只是我在Order模型上标记的公共变量。我无法获取表单字段值以将其提交到add-item

1 个答案:

答案 0 :(得分:1)

因此。我解决了这个问题。

我为宣布变量

创建了N模型
AddOrderItem

我现在编辑了<?php namespace backend\models; use yii\base\Model; class AddOrderItem extends Model { public $modelid; public $id; public $quantity; public function rules() { return [ [['modelid','id','quantity'], 'integer'], ]; } }

actionUpdate()

public function actionUpdate($id) { $model = $this->findModel($id); $addOrderModel = new AddOrderItem(); if ($addOrderModel->load(Yii::$app->request->post())) { $product = Product::findOne($addOrderModel->id); $orderItem = new OrderItem(); $orderItem->order_id = $model->id; $orderItem->title = $product->title; $orderItem->price = $product->getPrice(); $orderItem->product_id = $product->id; $orderItem->quantity = $addOrderModel->quantity; $orderItem->save(); return $this->redirect(['view', 'id' => $model->id]); } if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('update', [ 'model' => $model, 'addOrderModel' => $addOrderModel ]); } } 我添加了以下行

views/order/update

<?= $this->render('_addItemForm', ['model' => $addOrderModel]); ?> 现在包含了这个:

_addItemForm

我无法相信自己所做的一切。而且我很高兴我没有人帮忙,因为现在我知道的更多。