在按钮上调用控制器动作的问题单击

时间:2013-09-29 05:35:31

标签: php forms yii gii

我在按钮点击时调用控制器中的操作时遇到问题。因此控制器由Gii生成。它的所有操作都是由Gii生成的默认操作,但actionCreate().

除外

以下是相关代码::

class ProductsController extends Controller {
 public function actionCreate() {
        $model = new Products;



      if (isset($_POST['params'])) {
        //  $model->attributes = $_POST['Products'];
        //if ($model->save())
         //   $this->redirect(array('view', 'id' => $model->id));
         echo 'Yes Working';
    }

    $this->render('create', array(
        'model' => $model,
    ));
}

从上面的代码片段中可以清楚地看到,此操作正在调用名为create.php的视图。 这是create.php ::

<div class="page">
<div class="container">
    <div class="row">
    <h2>Create Products</h2>

    <?php echo $this->renderPartial('_form', array('model' => $model)); ?>
    </div>
</div>

这是部分渲染的形式。

<?php
$form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
    'id' => 'products-form',
    'action' => Yii::app()->createUrl('products/create'),
    'enableAjaxValidation' => false,
        ));
?>

<div class="form-actions">
    <?php
    echo CHtml::submitButton('Create', array(
        'submit' => 'EasyAesthetics/index.php/products/create',
        'params' => '1'
    ));
    ?>
</div>

<?php $this->endWidget(); ?>

现在我想要的是点击“创建”按钮后,它会调用actionCreate()中的ProductsController方法。现在按钮正在工作,我正被重定向到/demoProject/index.php/products/create,但回显'是工作'没有显示。

任何人都可以告诉我如何实现这一目标。如何只使用一个按钮再次调用创建操作,而$_POST数组中只有一个。

我需要这样做,以便在点击创建时actionCreate()方法将调用相关组件来创建必要的产品。

2 个答案:

答案 0 :(得分:1)

如果你的“var_dump()”编辑你的“$ _POST”,你会看到感知回答。

如果仍然没有发送帖子,你也可以将你的发送方式设置为发布。

$form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
   'id' => 'products-form',
   'action' => Yii::app()->createUrl('products/create'),
   'enableAjaxValidation' => false,
   'method' => 'post',
 ));

&GT;

或获取这样的参数(由$ _REQUEST设置):

$param = Yii::app()->request->getParam('Products' , null);

答案 1 :(得分:0)

查看表单生成的代码。如果您的模型名为“Hello”且名为“world”的字段,则表单字段将为

<input type="text" name="Hello[world]">

尝试以这种方式更改您的操作:

class ProductsController extends Controller {
    public function actionCreate() {
        $model = new Products;
        if (isset($_POST['Products'])) {
            echo 'Yes Working';
        }
        $this->render('create', array(
            'model' => $model,
        ));
    }
}

要特别注意这两行:

        $model = new Products;
        if (isset($_POST['Products'])) {

字段将采用相同的模型名称。如果有更多型号:

<input type="text" name="Model1[field1]">
<input type="text" name="Model1[field2]">
<input type="text" name="Model21[field2]">
<input type="text" name="Model2[field2]">

依旧......