我在按钮点击时调用控制器中的操作时遇到问题。因此控制器由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()
方法将调用相关组件来创建必要的产品。
答案 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]">
依旧......