我无法从我的laravel应用程序中的表单中获取数据,并在同一个控制器中使用其他方法显示它。
这是我的FormController
class ForumController extends Controller {
+
+ private $name,
+ $description;
+
+ public function __construct() {
+ $this->middleware('auth');
+ }
+
+ /**
+ * Show the form for creating a new resource.
+ *
+ * @return Response
+ */
+ public function create()
+ {
+ return view('forum.create');
+
+ $this->name = Input::post('name');
+ }
+
+ /**
+ * Show the details of their input once its created
+ */
+ public function created()
+ {
+ var_dump($this->name);
+ }
+}
这是我的Routes.php
Route::get('/group/create', 'ForumController@create');
+Route::post('/group/create', 'ForumController@created');
这是我的论坛创建视图。
@extends('app')
+
+@section('content')
+
+ <div class="container">
+ <h1>Create a Forum</h1>
+ <hr>
+
+ <div class="panel panel-default">
+ <div class="panel-heading">Create your own forum here!</div>
+
+ <div class="panel-body">
+ @if (count($errors) > 0)
+ <div class="alert alert-danger">
+ <strong>Whoops!</strong>There were some problems with your input.<br><br>
+ <ul>
+ @foreach ($errors->all() as $error)
+ <li>{{ $error }}</li>
+ @endforeach
+ </ul>
+ @endif
+ <form class="form-horizontal" method="POST" action="{{ url('/group/create') }}">
+
+ <input type="hidden" name="_token" value="{{ csrf_token() }}">
+
+ <div class="form-group">
+ <label class="col-md-4 control-label">Name</label>
+ <div class="col-md-6">
+ <input type="text" class="form-control" name="name" min="1" max="20">
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label class="col-md-4 control-label">Description</label>
+ <div class="col-md-6">
+ <input type="text" class="form-control" name="description" min="1" max="255">
+ </div>
+ </div>
+
+ <div class="form-group">
+ <div class="col-md-6 col-md-offset-4">
+ <button type="submit" class="btn btn-primary">
+ Create
+ </button>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+@stop
有人可以指出我正确的方向吗?
答案 0 :(得分:4)
嗯,您的示例的失败点是,当您加载$this->name
路由时,PHP不会持久created
。事实上,正如评论者所说,$this->name
永远不会被设置,因为你在定义之前有一个return语句。
在create方法中设置$this->name
后。导航到创建的路径时,即使您在设置名称后移动return语句,也不再设置$this->name
。
您需要在数据库/会话/缓存中使用pesist数据,或者从create方法重定向到传递数据的创建方法。
public function create()
{
// Handle POST Here
if (Input::has('name')) {
$this->name = Input::get('name');
// $this->name is redundant but even still...
return Redirect::to('created', array('name' => $this->name));
}
return view('forum.create');
}
答案 1 :(得分:1)
$name = Input::get('name');
或检查:
echo var_dump($_POST);
您应该在您要发布的控制器方法中使用此代码。 如果您想要保存一个请求然后将其丢弃,您可以将值保存在session或flashdata中。而且您需要将视图重定向到某个视图或路径。