1. Go to this page and download the library: Download rutatiina/orchid-crud library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rutatiina / orchid-crud example snippets
$ composer
use App\Models\Post;
/**
* The model the resource corresponds to.
*
* @var string
*/
public static $model = Post::class;
use App\Orchid\Resources\UserResource;
use Illuminate\Support\ServiceProvider;
use Orchid\Crud\Arbitrator;
class CrudServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot(Arbitrator $arbitrator)
{
$arbitrator->resources([
UserResource::class,
]);
}
}
use Illuminate\Database\Eloquent\Model;
use Orchid\Attachment\Attachable;
use Orchid\Filters\Filterable;
use Orchid\Screen\AsSource;
class Post extends Model
{
use AsSource, Filterable, Attachable;
}
use Orchid\Screen\Fields\Input;
/**
* Get the fields displayed by the resource.
*
* @return array
*/
public function fields(): array
{
return [
Input::make('title')
->title('Title')
->placeholder('Enter title here'),
];
}
use Orchid\Screen\TD;
/**
* Get the columns displayed by the resource.
*
* @return TD[]
*/
public function columns(): array
{
return [
TD::make('id'),
TD::make('title'),
];
}
use Orchid\Screen\Sight;
/**
* Get the sights displayed by the resource.
*
* @return Sight[]
*/
public function legend(): array
{
return [
Sight::make('id'),
Sight::make('title'),
];
}
public function filters(): array
{
return [
QueryFilter::class
];
}
public function filters(): array
{
return [
new DefaultSorted('id', 'desc'),
];
}
/**
* Get the resource should be displayed in the navigation
*
* @return bool
*/
public static function displayInNavigation(): bool
{
return false;
}
/**
* Get relationships that should be eager loaded when performing an index query.
*
* @return array
*/
public function with(): array
{
return ['user'];
}
/**
* Get the number of models to return per page
*
* @return int
*/
public static function perPage(): int
{
return 30;
}
/**
* Get the permission key for the resource.
*
* @return string|null
*/
public static function permission(): ?string
{
return null;
}
/**
* Get the permission key for the resource.
*
* @return string|null
*/
public static function permission(): ?string
{
return 'private-post-resource';
}
namespace App\Orchid\Actions;
use Illuminate\Support\Collection;
use Orchid\Crud\Action;
use Orchid\Screen\Actions\Button;
use Orchid\Support\Facades\Toast;
class CustomAction extends Action
{
/**
* The button of the action.
*
* @return Button
*/
public function button(): Button
{
return Button::make('Run Custom Action')->icon('fire');
}
/**
* Perform the action on the given models.
*
* @param \Illuminate\Support\Collection $models
*/
public function handle(Collection $models)
{
$models->each(function () {
// action
});
Toast::message('It worked!');
}
}
/**
* Get the actions available for the resource.
*
* @return array
*/
public function actions(): array
{
return [
CustomAction::class,
];
}
namespace App\Policies;
use App\Models\User;
use App\Models\Post;
use Illuminate\Auth\Access\HandlesAuthorization;
class PostPolicy
{
use HandlesAuthorization;
/**
* Determine whether the user can update the post.
*
* @param User $user
* @param Post $post
* @return mixed
*/
public function update(User $user, Post $post)
{
return true;
}
}
namespace App\Policies;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class PostPolicy
{
use HandlesAuthorization;
/**
* Perform pre-authorization checks.
*
* @param User $user
* @param string $ability
* @return void|bool
*/
public function before(User $user, $ability)
{
if ($user->hasAccess('private-post-resource')) {
return true;
}
}
}
/**
* Indicates whether should check for modifications between viewing and updating a resource.
*
* @return bool
*/
public static function trafficCop(): bool
{
return false;
}
/**
* Get the descriptions for the screen.
*
* @return null|string
*/
public static function description(): ?string
{
return null;
}
/**
* Get the text for the list breadcrumbs.
*
* @return string
*/
public static function listBreadcrumbsMessage(): string
{
return static::label();
}
/**
* Get the text for the create breadcrumbs.
*
* @return string
*/
public static function createBreadcrumbsMessage(): string
{
return __('New :resource', ['resource' => static::singularLabel()]);
}
/**
* Get the text for the edit breadcrumbs.
*
* @return string
*/
public static function editBreadcrumbsMessage(): string
{
return __('Edit :resource', ['resource' => static::singularLabel()]);
}
/**
* Get the text for the create resource button.
*
* @return string|null
*/
public static function createButtonLabel(): string
{
return __('Create :resource', ['resource' => static::singularLabel()]);
}
/**
* Get the text for the create resource toast.
*
* @return string
*/
public static function createToastMessage(): string
{
return __('The :resource was created!', ['resource' => static::singularLabel()]);
}
bash
php artisan orchid:resource PostResource
php
/**
* Get the validation rules that apply to save/update.
*
* @return array
*/
public function rules(Model $model): array
{
return [
'slug' => [
'
php
/**
* Get the filters available for the resource.
*
* @return array
*/
public function filters(): array
{
return [];
}
bash
php artisan orchid:filter QueryFilter
php
/**
* Action to create and update the model
*
* @param ResourceRequest $request
* @param Model $model
*/
public function onSave(ResourceRequest $request, Model $model)
{
$model->forceFill($request->all())->save();
}
/**
* Action to delete a model
*
* @param Model $model
*
* @throws Exception
*/
public function onDelete(Model $model)
{
$model->delete();
}
bash
php artisan orchid:action CustomAction
php
/**
* Get the displayable label of the resource.
*
* @return string
*/
public static function label()
{
return __('Posts');
}
/**
* Get the displayable singular label of the resource.
*
* @return string
*/
public static function singularLabel()
{
return __('Post');
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.