0

Craft (Laravel 出身) は初めてで、pluginfactory.io で作成されたプラグインのコントローラー アクションにルーティングしようとすると、404 エラーが発生します。プラグインは問題なくインストールされましたが、コントローラー アクションを実行する方法が見つからないようです。

関連するディレクトリ構造は次のとおりです

├── composer.json
├── config
│   ├── app.php
│   ├── db.php
│   ├── general.php
│   ├── license.key
│   ├── redactor
│   └── routes.php
├── modules
│   └── Module.php
├── plugins
│   └── signup
│       ├── composer.json
│       └── src
│           ├── Signup.php

│           ├── controllers
│           │   ├── EnrollmentController.php
│           ├── models
│           │   ├── Enrollment.php
│           │   └── Settings.php

/plugin/controller/action 形式を使用して EnrollmentController のデフォルトのコントローラー ルートhttp://localhost:8080/actions/signup/enrollment/indexを試しましたが、要求がコントローラーに到達しません。カスタム モジュールを作成しようとしたときに、同じ問題に遭遇しました。

これが私の EnrollmentController のコードです

namespace wolff\signup\controllers;

use wolff\signup\Enrollment;

use Craft;
use craft\web\Controller;

class EnrollmentController extends Controller
{
    protected $allowAnonymous = true;

    public function actionIndex()
    {
        $result = 'Welcome to the EnrollmentController actionIndex() method';

        die($result);
    }

404 のスタック トレースは次のとおりです。

yii\base\InvalidRouteException: Unable to resolve the request "signup/enrollment/index". in /Applications/MAMP/htdocs/craft/vendor/yiisoft/yii2/base/Module.php:537
Stack trace:
#0 /Applications/MAMP/htdocs/craft/vendor/craftcms/cms/src/web/Application.php(299): yii\base\Module->runAction('signup/enrollme...', Array)
#1 /Applications/MAMP/htdocs/craft/vendor/craftcms/cms/src/web/Application.php(566): craft\web\Application->runAction('signup/enrollme...', Array)
#2 /Applications/MAMP/htdocs/craft/vendor/craftcms/cms/src/web/Application.php(278): craft\web\Application->_processActionRequest(Object(craft\web\Request))
#3 /Applications/MAMP/htdocs/craft/vendor/yiisoft/yii2/base/Application.php(386): craft\web\Application->handleRequest(Object(craft\web\Request))
#4 /Applications/MAMP/htdocs/craft/web/index.php(21): yii\base\Application->run()
#5 {main}

Next yii\web\NotFoundHttpException: Page not found. in /Applications/MAMP/htdocs/craft/vendor/craftcms/cms/src/web/Application.php:570
Stack trace:
#0 /Applications/MAMP/htdocs/craft/vendor/craftcms/cms/src/web/Application.php(278): craft\web\Application->_processActionRequest(Object(craft\web\Request))
#1 /Applications/MAMP/htdocs/craft/vendor/yiisoft/yii2/base/Application.php(386): craft\web\Application->handleRequest(Object(craft\web\Request))
#2 /Applications/MAMP/htdocs/craft/web/index.php(21): yii\base\Application->run()
#3 {main}
4

2 に答える 2

0

プラグインのコントローラー メソッドを実行するには、2 つの方法があります。

1. フォーム アクション別:

<form method="post" accept-charset="UTF-8">
    <input type="hidden" name="action" value="demo-plugin/default/index">

この中で、demo-plugin は私のプラグイン ハンドルです。デフォルトは私のコントローラーで、index はコントローラーのアクション メソッドです。

2. Plugin.php ファイル内でコントロール パネル ルートを定義することにより:

UrlManager::class,
UrlManager::EVENT_REGISTER_CP_URL_RULES,
function(RegisterUrlRulesEvent $event) {
    $event->rules['contactform'] = 'demo-plugin/default/show';
}
于 2020-12-16T10:15:10.217 に答える