PHP code example of vasadibt / yii2-action-resolver

1. Go to this page and download the library: Download vasadibt/yii2-action-resolver 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/ */

    

vasadibt / yii2-action-resolver example snippets



use vasadibt\actionresolver\ActionResolveTrait;
use vasadibt\actionresolver\ResolvableActionBehavior;

class CashregisterApiController extends \yii\web\Controller
{
    use ActionResolveTrait;
    
    public function behaviors()
    {
        return [
            'resolver' => [
                'class' => ResolvableActionBehavior::class,
                'resolvers' => [
                    // Define a new resolvable
                    [
                        'resolvable' => User::class, // User class need to implement `\vasadibt\actionresolver\ResolvableInterface`
                        // Optional you can filter the fiering action
                        // 'actions' => ['*'],
                        // 'actions' => ['view', 'update', 'delete'],
                    ],
                    
                    // or a simple way
                    User::class,
                    
                    // or you can use callable resolving
                    [
                        'resolvable' => Post::class,
                        'actions' => ['update'],
                        'callable' => function(Request $request, Action $action){
                            $post = static::findOne($request->post('id'));
                            if($post === null){
                                throw new NotFoundHttpException(Yii::t('yii', 'Page not found.'));
                            }
                            if (!Yii::$app->user->can('updatePost', ['post' => $post])) {
                                throw new ForbiddenHttpException(Yii::t('yii', 'You are not allowed to perform this action.'));
                            }
                            return $post;
                        },
                    ],
                ],
            ],
        ];
    }
    
    public function actionView(User $user)
    {
        return $this->render('view', ['user' => $user]);
    }
    
    public function actionUpdate(Request $request, Post $post)
    {
        if($post->load($request->post())){
            $post->save();
            return $this->redirect(['index']);
        }
        return $this->render('update', ['model' => $post]);
    }
    
    public function actionDelete(Post $post)
    {
        $post->delete();
        return $this->redirect(['index']);
       
    }
}


use vasadibt\actionresolver\ResolvableInterface;

class User implements ResolvableInterface
{
    public function resolve($request, $action)
    {
        if($model = static::findOne($request->post('id'))){
            return $model;
        }
        throw new NotFoundHttpException(Yii::t('yii', 'Page not found.'));
    }
}