发布Laravel表单不起作用

时间:2014-02-04 15:07:54

标签: php forms laravel

我在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 ...”以便该部分正常工作。

2 个答案:

答案 0 :(得分:5)

找到解决方案。在制作系统的后台时,我重新使用了前台模板,但删除了所有多余的内容。或者我曾经想过。但是,前台标题模板有一个我只是部分删除的表单。

所以问题是有一个我不知道的开放FORM标签。因此,当我点击提交到我的表单时,它实际上是提交到另一个表单。

由于另一种形式没有行动,因此默认为自己。

当然,如果我刚刚验证了HTML会立即显示出来。这里学到的经验是在提交问题之前验证我的HTML!

答案 1 :(得分:0)

试试这个,并确保在app/config/app.php

正确配置您的网址
{{Form::open(['url'=>'backoffice/saveimage'])}}
  //code
{{Form::close()}}