remoblaser / resourceful
为您的资源创建迁移、种子、请求、控制器、模型和视图
该软件包的官方仓库似乎已消失,因此该软件包已被冻结。
Requires
- php: >=5.4.0
- illuminate/support: 5.*
- laracasts/generators: ~1.1
README
目录
Laravel Resourceful
Resourceful 允许您在几秒钟内创建一个完整的资源!为每个层创建一个具有所有 CRUD 方法的资源。使用 artisan 命令,让它为您创建迁移、种子、请求、控制器、模型和视图!您现在可以使用 --exclude 排除某些部分。请看示例!
注意!
这是一个初稿,欢迎提交 pull request。可能有很多错误,所以使用时请小心!将继续对其进行改进,测试尚未到来。
用法
通过 composer 安装
`composer require remoblaser/resourceful --dev``
添加服务提供者
您可能不想在生产服务器上使用此功能,因此我们不在 config/app.ch
中添加它,而是在 app/Providers/AppServiceProvider.php
中添加。以下是一个示例:由于我们正在使用 Jeffrey Way 的 / Laracats 的生成器,我们还需要注册他的 ServiceProvider。以下是一个示例
public function register() { if ($this->app->environment() == 'local') { $this->app->register('Remoblaser\Resourceful\ResourcefulServiceProvider'); $this->app->register('Laracasts\Generators\GeneratorsServiceProvider'); } }
运行它!
现在您可以使用此命令。我已经将所有内容提取到单个命令中,因此如果您只想以资源方式创建控制器,则可以使用 make:resource:controller
命令。make:resource:views
命令也是分开的,因此您可以自由使用此命令。使用 route:extend
命令,您可以将资源控制器扩展到您的 routes.php 文件。新命令 route:bind
将路由绑定到您的模型。使用 -b 选项,您可以在生成资源时自动执行此操作。要查看所有选项,请使用 make:resource -h
。
示例
我想有一个新闻资源。我想要为其提供所有 CRUD 功能。所以,而不是手动创建所有内容,我可以使用 php artisan make:resource news
来生成所有必要的内容,或者只需使用单个部分
$> php artisan make:resource news
Model created successfully.
Created Migration: 2015_04_17_083658_create_news_table
Seed created successfully.
Request created successfully.
Controller created successfully.
Views created successfully.
Routes successfully extended.
使用 --exclude 选项,您可以排除控制器、迁移、种子、模型和/或视图。如果您想生成除了视图和种子之外的所有内容,只需使用 --exclude=views,seed
。
您可以使用 --commands 选项提交并选择您想要执行的操作/命令,命令需要用逗号分隔。以下命令可用:create,store,show,index,edit,update,destroy
生成的控制器
<?php namespace App\Http\Controllers; use App\Http\Requests; use App\Http\Controllers\Controller; use App\News; use App\Http\Requests\NewsRequest; use Illuminate\Http\Request; class NewsController extends Controller { /** * Display a listing of the resource. * * @return Response */ public function index() { $news = News::all(); return view('news.index', compact('news')); } /** * Show the form for creating a new resource. * * @return Response */ public function create() { return view('news.create'); } /** * Store a newly created resource in storage. * * @param NewsRequest $request * @return Response */ public function store(NewsRequest $request) { News::create($request->all()); return redirect('/news'); } /** * Display the specified resource. * * @param int $id * @return Response */ public function show($id) { $news = News::find($id); return view('news.show', compact('news')); } /** * Show the form for editing the specified resource. * * @param int $id * @return Response */ public function edit($id) { $news = News::find($id); return view('news.edit', compact('news')); } /** * Update the specified resource in storage. * * @param int $id * @param NewsRequest $request * @return Response */ public function update(NewsRequest $request ,$id) { $news = News::find($id); $news->update($request->all()); return redirect('/news'); } /** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { $news = News::find($id); $news->destroy(); return redirect('/news'); } }
生成的视图
请确保包含 Illuminate/HTML,因为视图是用它构建的。
create.blade.php
@extends('app') @section('content') {!! Form::open(['route' => 'news.store'], 'method' => 'post']) !!} @include('news.partials.form', ['buttonText' => 'Create news']) {!! Form::close() !!} {{-- @include('errors.validation') --}} @stop
edit.blade.php
@extends('app') @section('content') {!! Form::open(['route' => ['news.update', $news->id]], 'method' => 'post']) !!} @include('news.partials.form', ['buttonText' => 'Update news']) {!! Form::close() !!} {{-- @include('errors.validation') --}} @stop
index.blade.php
@extends('app') @section('content') @foreach($newss as $news) {!! var_dump($news)) !!} @endforeach @stop
show.blade.php
@extends('app') @section('content') {!! var_dump($news) !!} @stop
信息
如果您喜欢我的工作,我会非常感激您能将其传播出去!谢谢!您可以通过 Twitter 联系我。