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」を実行すると、センサーリオの回答が表示されます。

また、まだ投稿を送信していない場合は、froms send メソッドを投稿に設定することもできます。

$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

フォームによって生成されたコードを見てください。「world」というフィールドを持つ「Hello」というモデルがある場合、フォームフィールドは

<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,
        ));
    }
}

次の 2 行に特に注意してください。

        $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 に答える