我试图在yii中将数据插入mysql数据库,但我希望能够访问控制器中的每个输入。 所以我可以将它们放在foreach中,因为它们都有相同的名称但问题随时都存在 我尝试访问输入名称我得到此错误"未定义的索引:主题[主题]" ...就像输入在视图中不存在
这是我的控制器
public function actionCompose()
{
$topic= new Topic();
$topic->topic_id = Yii::$app->request->post('Topic','[topic]');
foreach ($_POST["Topic[topic]"] as $key => $top) {
$top=> $topic;
}
if ($topic->load(Yii::$app->request->post()) ) {
$topic->load($topic);
$topic->save();
return $this->refresh();
}
return $this->render('compose');
}
这是我的观点
use yii\widgets\ListView;
use yii\data\ArrayDataProvider;
use app\models\MyProfile;
use app\models\LikeDiscussion;
use yii\widgets\ActiveForm;
use common\models\Topic;
use common\models\Comment;
use common\models\Users;
use common\models\Candidate;
use yii\widgets\Pjax;
use yii\helpers\Html;
use frontend\assets\AppAsset;
$this->title = 'My Yii Application';
?>
<?php $form = ActiveForm::begin(); ?>
<input type="name" class="form-control" required="true" name="Topic[topic]" id="topic" placeholder="topic">
<input type="name" class="form-control" required="true" name="Topic[topic]" id="topic" placeholder="topic">
<input type="name" class="form-control" required="true" name="Topic[topic]" id="topic" placeholder="topic">
<?php ActiveForm::end(); ?>
当我在下面使用它时,它只插入最后的数据。我理解为什么,但我需要插入所有3个输入。任何其他方式。
public function actionCompose()
{
$topic= new Topic();
if ($topic->load(Yii::$app->request->post()) ) {
$topic->load($_POST);
$topic->save();
return $this->refresh();
}
return $this->render('compose');
}
答案 0 :(得分:0)
第Collecting tabular input条中的官方文档中介绍了使用相同类型的多个模型。
以下是一些重要部分。
控制器代码:
<?php
namespace app\controllers;
use Yii;
use yii\base\Model;
use yii\web\Controller;
use app\models\Setting;
class SettingsController extends Controller
{
// ...
public function actionUpdate()
{
$settings = Setting::find()->indexBy('id')->all();
if (Model::loadMultiple($settings, Yii::$app->request->post()) && Model::validateMultiple($settings)) {
foreach ($settings as $setting) {
$setting->save(false);
}
return $this->redirect('index');
}
return $this->render('update', ['settings' => $settings]);
}
}
查看:
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
$form = ActiveForm::begin();
foreach ($settings as $index => $setting) {
echo $form->field($setting, "[$index]value")->label($setting->name);
}
ActiveForm::end();
使用框架,最好使用ActiveField
作为显示表单输入的抽象。
根据您的模型进行自定义,就是这样。