Laravel路线发布vs获得

时间:2018-09-06 10:56:45

标签: php laravel post routes laravel-blade

项目是laravel 5.6。我的项目有2条路线:

web.php

Route::get('testa', 'HomeController@showTestForm')->name('test');
Route::post('testa', 'HomeController@doTest');

HomeController:

public function showTestForm()
{
    Log::warning('from showTestForm');    
    return view('test');
}

.public function doTest(Request $request)
{
    Log::info('from doTest');    
    // return Input::all();
    return view('test', [
        'input' => implode(', ', Input::all()),
    ]);
}

test.blade.php

<form method="post" action="{{ route('test') }}">
@csrf

<input type="text" name="inputvalue">
<button type="submit" class="btn btn-primary">
merge
</button>

</form>

<div>Result</div>
@if(isset($input))
{{$input}}
@endif

为什么在route('test')上工作? 谢谢。

4 个答案:

答案 0 :(得分:0)

编辑:

<form method="post" action="{{ route('postTest') }}">

然后使用

frame2 = new JFrame();
frame2.setBounds(100, 100, 543, 432);
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2.getContentPane().setLayout(null);

JList list = new JList(names);
list.setVisibleRowCount(10);

JScrollPane scroller = new JScrollPane(list);
scroller.setBounds(36, 11, 161, 345);

frame2.getContentPane().add(scroller);


JList list_1 = new JList(access);

list_1.setVisibleRowCount(10);

scroller = new JScrollPane(list_1);
scroller.setBounds(356, 11, 161, 345);
frame2.getContentPane().add(scroller);

frame2.setVisible(true);

希望这会起作用

答案 1 :(得分:0)

这是因为您打错了路线。

更改: <form method="post" action="{{ route('test') }}">

至: <form method="post" action="{{ url('/testa') }}">

或按照之前的回答步骤操作(命名发布路线,然后称呼它)

答案 2 :(得分:0)

我相信从OP中他们不会了解同一路由如何接受GETPOST请求。

区别在于服务器如何接收数据。

已阅读:HTTP Requests

答案 3 :(得分:0)

即使您的表单是一个route('test')请求,POST仍然可以工作的原因是因为route()只是一个帮助函数,用于生成一个URL,而您的GET和{{ 1}}路由都使用相同的网址。

您已经在表单中指定了发布请求,并将其发送到提供的网址(在这种情况下,该网址将与您的POST请求相同)。