在Phalcon php中不能调用indexController以外的indexAction动作

时间:2014-04-11 21:24:10

标签: php controller indexing action phalcon

我的xampp / htdocs目录中有一个名为phalcon的简单项目,我将apache配置为指向该文件夹,以便我可以在浏览器中访问phalcon /。

当我尝试打开索引(默认)以外的索引控制器视图时,会出现此问题。
例如我在索引控制器中有someAction,在views / index中我有some.phtml。
如果我去phalcon / index / some我没有把some.phtml的文本输出到页面。
这可能是因为它认为我不想打开IndexController-> indexAction并将一些作为参数传递。

将不胜感激为解决此问题提供的任何帮助。
附:项目框架是从https://github.com/phalcon/skeleton-single复制的。

索引控制器:

<?php

class IndexController extends ControllerBase
{

  public function indexAction($action = null)
  {

  }
  public function someAction () {
      exit('test');
  }

}

views / index / index.phtml:

<?php echo $this->getContent(); ?>

视图/索引/ some.phtml:

Some Action

视图/ index.phtml

<!DOCTYPE html>
<html>
<head>
  <title>Phalcon PHP Framework</title>
</head>
<body>
  <?php echo $this->getContent(); ?>
</body>
</html>

6 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您的问题,但我认为您的操作必须与视图中的文件夹/文件匹配才能正常运行。

另外,我看到你扩展了'ControllerBase'然后在控制器文件中有一个名为'ControllerBase'的文件:

class ControllerBase extends \Phalcon\Mvc\Controller 

您可以检查的另一件事是公用文件夹中的index.php。大多数情况下,这些事情发生是因为DI丢失或输入错误。

答案 1 :(得分:0)

我认为您应该检查.htaccess文件以获取以下规则:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>

这将启用所有其他控制器操作,而不仅仅是索引。 要检查问题是否在此规则中,您可以通过url /index.php?_url=/index/some 访问控制器方法 - 如果要加载,请更改.htaccess,如示例以下

答案 2 :(得分:0)

不确定这是否是预期的行为,但是在某些情况下,在IndexController会返回Index/some/返回找不到响应的情况下,在大写情况下,应请求index/some/的操作。

答案 3 :(得分:0)

尝试使用自定义路由。

如果您使用的是骨架项目,但是可以在其他应用程序中使用相同的概念。

创建文件app / config / routes.php

/**@var $router \Phalcon\Mvc\Router*/
$router = $di->get('router');

$router->add(
    "/index/some",
    [
       "controller" => "index",
       "action"     => "some",
    ]
 );

在加载services.php之后在index.php中

require __DIR__ . '/../app/config/routes.php';

答案 4 :(得分:-2)

please change your .htaccess settings to following one

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule  ^$ public/    [L]
RewriteRule  (.*) public/$1 [L]
</IfModule>

答案 5 :(得分:-2)

$(document).ready(function() {
    $.ajax({
        url: "/rest/emp/10" (Your Rest end point URL)
    }).then(function(data) {
       $('#eid').append(data.id);
       $('#eName').append(data.name);
       $('#eAddress').append(data.address);

    });
});

是您正在寻找的。