remoblaser/resourceful

为您的资源创建迁移、种子、请求、控制器、模型和视图

该软件包的官方仓库似乎已消失,因此该软件包已被冻结。

1.0.1 2015-12-29 10:04 UTC

This package is not auto-updated.

Last update: 2023-02-23 07:40:46 UTC


README

Build Status

目录

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 联系我。