【问题标题】:Phalcon / MVC / Simple routing not workingPhalcon / MVC / 简单路由不起作用
【发布时间】:2021-03-31 10:56:50
【问题描述】:

我有一个简单的按钮,可以链接到新页面 /connect。

<a id="userMenuEditConnect" onclick="window.location.href = '{{url('connect')}}';">Connect</a>

我创建了一条路线:

$router->add(
        '/connect',
        array(
            'controller'    => 'connexion',
            'action'        => 'connect'
        )
);

在我的 ConnexionController 中,我添加了以下代码:

public function connectAction() {
    echo '<p>Simple Test </p>';
}

这不起作用。当我点击我的按钮时,我的浏览器会将我重定向到 /index。 Phpstorm 告诉我我的新函数 connectAction 似乎“未使用”。 在我的浏览器中,我有一个状态码:302 Found。

任何帮助将不胜感激。 提前致谢。

【问题讨论】:

  • 我对 Phalcon 不熟悉,但从外观上看,您可能只需要在视图文件夹中为该操作创建一个视图。
  • 也不熟悉Phalcon,但是'action' =&gt; 'connect'不需要对应你控制器中的动作,(错误地)称为connectAction()而不是connect()?跨度>
  • 它不起作用。我试图在我的 view/connexion 文件夹中添加一个视图,用 $this->setViewName('connexion', 'mconnect'); 更改了我的函数 connectAction;它不起作用。我也有同样的问题。
  • @berend :不,我需要在 name 函数中有“action”。否则,我会从 Phalcon 收到此错误:致命错误:未捕获的 Phalcon\Mvc\Dispatcher\Exception: Action 'connect' is not found on handler 'connexion'。

标签: php model-view-controller view routes phalcon


【解决方案1】:

由于它看起来不是命名路由,因此可能应该使用命名路由。

$router->add(
        'connect',
        array(
            'controller'    => 'connexion',
            'action'        => 'connect'
        )
)->setName('connectroute');

然后:

<a id="userMenuEditConnect" onclick="window.location.href = '{{ url(['for': 'connectroute']) }}';">Connect</a>

【讨论】:

  • 如果我添加斜杠它不起作用,我的浏览器尝试访问 url//connect 并且我遇到另一个不同的问题
  • 我已经更新了我的答案。 1. 设置路由名称和 2. 从 router-&gt;add 中删除斜线。让我知道它是否有效。
【解决方案2】:

需要在依赖注入中定义url

$di->set('url',function(){
    $url = new Url();
    $url->setBaseUri('/');
    return $url;
},true);

否则你所拥有的是正确的。但是,我建议不要使用

{{url('connect')}}

你应该改用

"/connect"

对 phalcon 的依赖越少越好。有这么多的错误。我一直在寻找它们。对框架非常失望。

【讨论】:

    猜你喜欢
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    相关资源
    最近更新 更多