【发布时间】:2014-11-25 19:55:45
【问题描述】:
我现在正在学习 Laravel,我通过创建一个简单的 CRUD(CREATE-READ-UPDATE-DELETE)来做到这一点。这是我学习新框架的方式。在我使用 CodeIgniter 之前,我发现 Laravel 比 CodeIgniter 好得多,它有很多功能。
我正在学习本教程
http://www.allshorevirtualstaffing.com/developing-crud-applications-in-laravel-4/
我正在显示 CREATE 视图。但我无法访问它的路线。
这是我的文件夹结构
wamp
www
mylaravel
app
bootstrap
public
vendor
到目前为止,我有这些代码:
控制器
<?php
class EmployeesController extends \BaseController {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$employees = Employee::all();
return View::make('index', compact('employees'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
return View::make('create');
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
//
}
public function handleCreate() {
$employee = new Employee;
$employee->first_name = Input::get('first_name');
$employee->last_name = Input::get('last_name');
$employee->email = Input::get('email');
$employee->save();
return Redirect::action('EmployeesController@index');
}
}
型号
<?php
class Employee extends Eloquent
{
}
?>
查看(index.blade.php)
@extends('layout')
@section('content')
<div class="page-header" style="border: 1x solid #0077b3; text-align-center">
<h1>EMS <small> Better Employee Management </small> </h1>
</p></div>
<div class="panel panel-default">
<div class="panel-body">
<a href="{{ action('EmployeesController@create') }}" class="btn btn-info">Add new employee</a>
</div>
@if ($employees->isEmpty())
There are no employees! :(
@else
<table class="table table-striped">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach($employees as $employee)
<tr>
<td> {{ $employee->first_name }} </td>
<td> {{ $employee->last_name }} </td>
<td> {{ $employee->email }} </td>
<td>
<a href="{{ action('EmployeesController@edit', $employee->id) }}" class="btn btn-default">Edit</a>
<a href="{{ action('EmployeesController@delete', $employee->id) }}" class="btn btn-danger">Delete</a>
</td>
</tr>
@endforeach
</tbody>
</table>
@endif
@stop
</div>
</div>
查看(layout.blade.php)
<!DOCTYPE html>
<html>
<head>
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet">
<style type="text/css">
table form { margin-bottom: 0; }
form ul { margin-left: 0; list-style: none; }
.error { color: red; font-style: italic; }
body { padding-top: 20px; }
</style>
</head>
<body>
<div class="container">
@if (Session::has('message'))
<div class="flash alert">
<p>{{ Session::get('message') }}</p>
</div>
@endif
@yield('content')
</div>
</body>
</html>
查看(create.blade.php)
@extends('layout')
@section('content')
<div class="page-header" style="border: 1px solid #0077b3;">
<h1>Add New Employee</h1>
@if( $errors->count() > 0 )
<div class="alert alert-danger">
<ul>
@foreach( $errors->all() as $message)</p>
<li>{{ $message }}</li>
@endforeach
</ul>
</div>
@endif
<form action="{{ action('EmployeesController@handleCreate') }}" method="post" role="form">
<div class="form-group">
<label for="first_name">First Name</label>
<input type="text" class="form-control" name="first_name" />
</div>
<div class="form-group">
<label for="last_name">Last Name</label>
<input type="text" class="form-control" name="last_name" />
</div>
<div class="form-group">
<label for="email">Last Name</label>
<input type="text" class="form-control" name="email" />
</div>
<input type="submit" value="Add" class="btn btn-primary" />
<a href=" action('EmployeesController@index') " class="btn btn-link">Cancel</a>
</form>
@stop
</div>
路线(routes.php)
<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the Closure to execute when that URI is requested.
|
*/
/*
Route::get('/', function()
{
return View::make('hello');
});
*/
Route::model('employee', 'Employee');
Route::get('/', 'EmployeesController@index');
Route::get('/create', 'EmployeesController@create');
Route::get('/edit/{$employee}', 'EmployeesController@edit');
Route::get('/delete/{$employee}', 'EmployeesController@delete');
Route::post('/create', 'EmployeesController@handleCreate');
Route::post('/edit', 'EmployeesController@handleEdit');
Route::post('/delete', 'EmployeesController@handleDelete');
当我访问这个 URL 时:
http://localhost/mylaravel/public/
它显示带有员工表的索引页面
但是当我点击添加新员工时
转到这个页面
http://localhost/mylaravel/public/create
我有这个错误:
Not Found
The requested URL /mylaravel/public/create was not found on this server.
Apache/2.4.9 (Win64) OpenSSL/1.0.1g PHP/5.5.12 Server at localhost Port 80
我不知道我哪里出错了。你能帮我解决这个问题吗?
【问题讨论】:
-
检查
mod_rewrite是否启用 -sudo a2enmod rewrite。还有you can just create a Resource Controller to handle all your CRUD
标签: php apache .htaccess mod-rewrite laravel