我知道我在这里犯了错误,但我一整天都在寻找这个。
我使用了yii2框架,我还是新手,
我想访问partone/two
页面,partone/two
页面有两个提交按钮,一个用于添加行,第二个用于验证输入
在 PartoneController.php
中<?
public function actionTwo() {
if(\Yii::$app->user->isGuest) {
$this->goHome();
}
$models = [];
$val = "" ;
//Create array of items
Yii::trace("Lets start: ");
if(Yii::$app->request->post('addRow') == 'true'){
Yii::trace("hello");
Model::loadMultiple($models, Yii::$app->request->post('items'));
$model = new RelationForm();
array_push($models, $model);
return $this->render('two', ['items' => $models]);
}
if (Model::loadMultiple($models, Yii::$app->request->post('items')) && Model::validateMultiple($models))
{
Yii::trace("hello again");
$count = 0;
for($i = 0 ; $i < $models.length(); $i++){
if(strpos($relationShownCurrently, '' + $i) !== FALSE){
if(!$items[$i]->store()){
return $this->render('two', [ 'items' => $models ]);
};
}
}
Yii::$app->session->setFlash('success', "Processed {$count} records successfully.");
return $this->redirect(['index']); // redirect to your next desired page
} else {
for($i = 0; $i < 5 ; $i++) {
$models[$i] = new RelationForm();
}
return $this->render('two', ['items' => $models]);
}
return null;
}
在 two.php
内<?php
use yii\app\clientScript;
use yii\bootstrap\ActiveForm;
use yii\helpers\Html;
use frontend\models\relation;
$this->registerJsFile('http://code.jquery.com/jquery-2.1.4.min.js');
function addRelationForm($form, $item, $i){
return '<div class="col-md-12" id=\'r_'.($i).'\'>
<div class="form-group col-md-12">
<label> Friend ' . ($i + 1) . '</label>'.
$form->field($item, "user_friend_id[$i]") .
'<label> Closeness to you </label>
<div class="form-inline"> ' .
$form->field($item, "[$i]closeness")->radio(array("label" => "1", "value" => 1)) .
$form->field($item, "[$i]closeness")->radio(array("label" => "2", "value" => 2)) .
$form->field($item, "[$i]closeness")->radio(array("label" => "3", "value" => 3)) .
$form->field($item, "[$i]closeness")->radio(array("label" => "4", "value" => 4)).
$form->field($item, "[$i]closeness")->radio(array("label" => "5", "value" => 5)) .
'</div>'
.'<div class="form-inline" >
I know this person as a friend for approximately (in year) '.
$form->field($item, "[$i]known_for")->textInput(["type" => "number", "placeholder" => '(in year)'])->label(false).
'</div>'.
'</div></div>';
}?>
<h1>Friendship Survey</h1>
<p> Introverted the space below, list up to ten of your closest friends that are currently in Econs/ Math and Econs; a minimum of 5 is compulsory. *Please select their full names from the dropdown list provided. Also, please select on the scale how close you are to each friend. 1Note the incentives for this section </p>
<?php $form =ActiveForm::begin(['id' => 'partone-two-form']) ?>
<?php foreach ($items as $i => $item) {
echo addRelationForm($form ,$item, $i);
}?>
<hr>
<div class="row">
**<div style="float:left" class="form-group">
<?= Html::submitButton('Add row', ['name' => 'addMore', 'value' => 'true', 'class' => 'btn btn-info']) ?>
</div>
<div style="float:right" class="form-group">
<?= Html::submitButton('Next Page', ['class' => 'btn btn-primary', 'name' => 'button-value', 'value' => 'next']) ?>
</div>**
</div>
<?php ActiveForm::end()?>
<?php $this->registerJsFile('/advanced/frontend/web/js/partone-two.js');?>
问题说明:
我想确定触发了哪个按钮,我已经指定了提交按钮的名称和值( two.php 中的addRow按钮和nextPage按钮)。但是我使用Yii::$app->request->post('addRow') == 'true'
无法获得 PartoneController.php 中的值,但失败了
我尝试的其他解决方案:
我试图使用普通的html作为按钮,我不能在控制器yii中使用$_POST
,编译器说
****这是我基于ScaiEdge反馈的更新代码:****
public function actionTwo(){
if(\Yii::$app->user->isGuest){
$this->goHome();
}
$models = [];
$val = "" ;
$submit = Yii::$app->request->post('command');
for($i = 0; $i < 5 ; $i++){
$models[$i] = new RelationForm();
}
//Create array of items
Yii::trace("command: " .$submit);
if($submit == 'addmore'){
Yii::trace( "hello");
Model::loadMultiple($models, Yii::$app->request->post('items'));
$model = new RelationForm();
array_push($models, $model);
return $this->render('two', ['items' => $models]);
}
if (Model::loadMultiple($models, Yii::$app->request->post()) )
{
Yii::trace("hello again");
$count = 0;
for($i = 0 ; $i < count($models); $i++){
if(!$models[$i]->validate()){
if($models[$i]->hasErrors()){
Yii::trace( Html::errorSummary($models[$i] ));
}
return $this->render('two', ['items' => $models]);
}
}
for($i = 0 ; $i < count($models); $i++){
if(!$models[$i]->store()){
return $this->render('two', ['items' => $models]);
}
}
Yii::$app->session->setFlash('success', "Processed {$count} records successfully.");
return $this->redirect('three', ['items' => $models]);// redirect to your next desired page
}
else {
return $this->render('two', ['items' => $models, 'submit' => $submit ]);
}
return null;
}
Html客户端:
<h1>Friendship Survey</h1>
<p> Introverted the space below, list up to ten of your closest friends that are currently in Econs/ Math and Econs; a minimum of 5 is compulsory. *Please select their full names from the dropdown list provided. Also, please select on the scale how close you are to each friend. 1Note the incentives for this section </p>
<?php $form =ActiveForm::begin() ?>
<?php foreach ($items as $i => $item) {
echo addRelationForm($form ,$item, $i);
}
?>
<hr>
<div class="row">
<div style="float:left" >
<?= Html::submitButton('Add Row', [ 'name' => 'command', 'value' => 'addmore', 'class' => 'btn btn-info']) ?>
</div>
<div style="float:right" >
<?= Html::submitButton('Next Page', ['class' => 'btn btn-primary', 'name' => 'command', 'value' => 'nextpage']) ?>
</div>
</div>
<?php ActiveForm::end()?>
当我在客户端删除它时,它有效,任何人都可以解释原因吗? $ item){ echo addRelationForm($ form,$ item,$ i); } ?&GT;
客户端变得像
<?php $form =ActiveForm::begin() ?>
<hr>
<div class="row">
<div style="float:left" >
<?= Html::submitButton('Add Row', [ 'name' => 'chosen', 'value' => 'addmore', 'class' => 'btn btn-info']) ?>
</div>
<div style="float:right" >
<?= Html::submitButton('Next Page', ['class' => 'btn btn-primary', 'name' => 'chosen', 'value' => 'nextpage']) ?>
</div>
</div>
<?php ActiveForm::end()?>
addRelationForm函数:
function addRelationForm($form, $item, $i){
return '<div class="col-md-12" id=\'r_'.($i).'\'>
<div class="form-group col-md-12">
<label> Friend ' . ($i + 1) . '</label>'.
$form->field($item, "[$i]user_friend_id") .
'<label> Closeness to you </label>
<div class="form-inline"> ' .
$form->field($item, "[$i]closeness")->widget(RangeInput::classname(), [
'options' => ['placeholder' => 'Rate (1 - 5)...'],
'html5Options' => [
'min' => 1, 'max' => 5,
'width' => '75%',
'addon' => ['append' => ['content' => '<i class="glyphicon glyphicon-star"></i>']]
]])->label(false).
'</div> '.
'<div class="form-inline" >
I know this person as a friend for approximately (in year) '.
$form->field($item, "[$i]known_for")->textInput(["type" => "number", "placeholder" => '(in year)'])->label(false).
'</div></div></div>';
}
答案 0 :(得分:0)
您正在使用两个提交按钮,因此两个提交按钮之间会发生冲突。 尝试将Yii :: $ app-&gt; request-&gt; post('addRow')更改为Yii :: $ app-&gt; request-&gt; post('addmore') 下一页 试试Yii :: $ app-&gt; request-&gt; post('nextpage')
答案 1 :(得分:0)
只需使用ajax提交即可,然后做任何您想做的事情:
$('.yourForm').on('submit', function (event) {
event.preventDefault();
var formdata = new FormData(this);
var whatEverInAddition = $('SelectYourDesiredElements').val();
formdata.append("whatEverInAddition", whatEverInAddition );
$.ajax({
url: ...
and so on ...
答案 2 :(得分:0)
可以从\ Yii :: $ app-> request-> post('command')
获取两个提交按钮的值。