我在laravel中设置了一个简单的表单:
这是路线档案:
Route::get('backoffice/upload', [ 'as' => 'backoffice/upload',
'uses' => 'UploadController@uploadForm']);
Route::post('backoffice/saveimage',[ 'as' => 'backoffice/saveimage',
'uses' => 'UploadController@saveImage']);
这是控制器:
class UploadController extends \BaseController
{
public function uploadForm()
{
return View::make("backoffice.upload.create");
}
public function saveImage()
{
return "Uploading...";
}
}
这是查看文件:
<h1>Upload Image</h1>
{{ Form::open(['action' => 'UploadController@saveImage']) }}
<div class='formfield'>
{{ Form::label('newfilename','New File Name (optional):') }}
{{ Form::input('text','newfilename') }}
{{ $errors->first('newfilename') }}
</div>
<div class='formfield'>
{{ Form::submit($action,['class'=>'button']) }}
{{ Form::btnLink('Cancel',URL::previous(),['class'=>'button']) }}
</div>
{{ Form::close() }}
//生成HTML
<h1>Upload Image</h1>
<form method="POST" action="http://my.local/backoffice/saveimage" accept-charset="UTF-8"><input name="_token" type="hidden" value="x9g4SW2R7t9kia2B8HRJTm1jbLRl3BB8sPMwvgAM">
<div class='formfield'>
<label for="newfilename">New File Name (optional):</label>
<input name="newfilename" type="text" id="newfilename">
</div>
<div class='formfield'>
<input class="button" type="submit" value="Create">
</div>
</form>
所以,如果我转到:http://my.local/backoffice/upload,我会收到上面带有HTML的表单。
但是,如果我键入任何内容,然后单击“提交”,我将返回到表单但现在具有以下URL:
http://my.local/backoffice/upload?pz_session=x9g4SW2R7t9kia2B8HRJTm1jbLRl3BB8sPMwvgAM&_token=x9g4SW2R7t9kia2B8HRJTm1jbLRl3BB8sPMwvgAM&newfilename=ddd
这对我没有意义。到目前为止,我在处理表单时总是使用route :: resource,并且没有问题。我正在尝试使用GET和POST做一个简单的表单,并且没有悲伤的结局。我错过了什么?
此外,如果我修改routes.php并将其从post更改为any,则打开浏览器窗口并输入:http://my.local/backoffice/saveimage然后我收到消息“Uploading ...”以便该部分正常工作。
答案 0 :(得分:5)
找到解决方案。在制作系统的后台时,我重新使用了前台模板,但删除了所有多余的内容。或者我曾经想过。但是,前台标题模板有一个我只是部分删除的表单。
所以问题是有一个我不知道的开放FORM标签。因此,当我点击提交到我的表单时,它实际上是提交到另一个表单。
由于另一种形式没有行动,因此默认为自己。
当然,如果我刚刚验证了HTML会立即显示出来。这里学到的经验是在提交问题之前验证我的HTML!
答案 1 :(得分:0)
试试这个,并确保在app/config/app.php
{{Form::open(['url'=>'backoffice/saveimage'])}}
//code
{{Form::close()}}