0

我在单击按钮时调用控制器中的操作时遇到问题。所以控制器是由 生成的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,但没有显示回显“Yes Working”。

谁能告诉我如何实现这一目标。如何仅使用一个按钮和$_POST数组中的 1 再次调用创建操作。

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

4

2 回答 2

1

如果你的 "var_dump()" 编辑了你的 "$_POST" ,你会看到 sensorario 的答案。

如果仍然不发送帖子,您也可以将您的 froms 发送方法设置为发布。

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

?>

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

$param = Yii::app()->request->getParam('Products' , null);
于 2013-09-29T09:09:37.650 回答
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]">

等等 ...

于 2013-09-29T06:12:25.527 回答