q)我想在la-ravel中插入一个表格,我的版本是P hp 7和la ravel 5.8。我编写了所有代码,然后运行,但未显示任何形式或任何内容,它显示了空白页,并且还创建了迁移数据库和表,但是由于表格未显示在URL中,所以我无法插入。 }} 你能帮我吗?
1)我尝试了HTTP://localhost:8000/student/create
但这不起作用
这是视图文件,HTTP://localhost:8000/student/create
resources/views/student/create.blade.php
2)这是控制者
@extends('master')
@section('content')
<div class="row">
<div class="col-md-12">
<br />
<h3 align="center">add data</h3>
<br />
@if(count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
@endif
@if(\Session::has('success'))
<div class="alert alert-success">
<p>{{ \Session::get('success')}}</p>
</div>
@endif
<form method="post" action="{{url('student')}}">
{{csrf_field()}}
<div class="form-group">
<input type="text" name="first_name" class="form-control"
placeholder="enter the first name" />
</div>
<div class="form-group">
<input type="text" name="last_name" class="form-control"
placeholder="enter the last name" />
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" />
</div>
</form>
</div>
</div>
@endsection
3)这是路由/web.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\student;
use Session;
class StudentController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('student.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
'first_name' => 'required',
'last_name' => 'required'
]);
$student=new student([
'first_name' => $request->get('first_name'),
'last_name' => $request->get('last_name')
]);
$student->save();
return redirect()->route('student.create')->with('success','data added');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
答案 0 :(得分:1)
更改此行:
Route::resource('student/create','StudentController');
对此:
Route::resource('students','StudentController');
并访问此地址:
localhost:8000/students/create
请参阅Laravel文档here。
您的master.blade.php
中还有一个错字,它必须是@yield('content')
(注意i
和e
的位置)。
然后在您的视图中更改表单标签,如下所示:
<form method="post" action="{{route('students.store')}}">
答案 1 :(得分:0)
问题出在您的资源路线上。它具有索引,创建,存储,显示,编辑,更新和删除路线。当您使用127.0.0.1:8000/student/create时,它将转到您控制器的索引方法中,并且由于您的索引方法中没有任何内容,因此您将得到一个空白页。因此,像
一样更改您的路线Route::resource('student','StudentController');
现在您可以访问页面
127.0.0.1:8000/student/create
并将表单操作更改为
<form method="post" action="{{route('student.store')}}">
答案 2 :(得分:0)
请添加此
并且还请编辑您的路线/web.php
路线:: resource('student','StudentController');
有关更多详细信息,请访问此链接 Laravel - Route::resource vs Route::controller
答案 3 :(得分:0)
您将学生路线资源定义为错误。您目前具有这样的功能:
Route::resource('student/create','StudentController');
因此,当您检查php artisan route:list
时,将得到以下输出:
| GET|HEAD | student/create/create | create.create | App\Http\Controllers\StudentController@create
如您所见,您已经在路径名称中创建了两次,并且试图找到student/create
将您的路线资源更改为此:
Route::resource('students','StudentController');
现在,当您转到php artisan route:list
时,您的路线将如下所示:
| GET|HEAD | student/create | student.create | App\Http\Controllers\StudentController@create
现在,您可以通过转到student/create
来显示该表格来调用该路由。