У меня есть простой проект в моем каталоге xampp / htdocs под названием phalcon, и у меня есть apache, настроенный на то, чтобы указать на эту папку, чтобы я мог перейти на phalcon / в мой браузер.
Проблема возникает, когда я пытаюсь открыть представление контроллера индекса, отличного от индекса (по умолчанию).
Например, у меня есть someAction в Index controller, а в views / index у меня есть some.phtml.
Если я перейду к phalcon / index / some, я не получу текст из some.phtml, выводимый на страницу.
Вероятно, потому, что он думает, что я не буду открывать IndexController-> indexAction и передавать некоторые параметры.
Был бы благодарен за любую помощь, оказанную для решения этой проблемы.
PS скелет проекта был скопирован с 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>
Я не уверен, полностью ли понимаю ваш вопрос, но я думаю, что ваше действие должно соответствовать папке / файлу с тем же именем, чтобы он функционировал.
Кроме того, я вижу, что у вас есть расширенный «ControllerBase», тогда у вас есть файл под названием «ControllerBase» в файле контроллеров с:
class ControllerBase extends \Phalcon\Mvc\Controller
Еще одна вещь, которую вы можете проверить, будет index.php в вашей общей папке. В большинстве случаев эти вещи происходят из-за отсутствия DI или неправильного ввода.
Я думаю, что вы должны проверить свой файл .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, как в примере ниже
please change your .htaccess settings to following one <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule>
class SomeController...
это то, что вы ищете.