質問編集履歴

2 質問内容をより具体的に更新

hokuhoku8

hokuhoku8 score 19

2017/03/13 14:35  投稿

Phalconチュートリアル1が動作しない
PhalconのアプリをPHPビルドインサーバ起動させた場合のアクセスURLについて
Phalconをローカル環境で動作させ、ドキュメントに記載されているチュートリアル1を実施しようとしてますが、想定どおり画面遷移しません。トップ画面は想定どおりに表示されるのですが、どのURLに遷移してもトップページが表示されてしまいます。
Phalconのマニュアルのあるとおり、Phalcon開発者ツールで以下のとおり、プロジェクトを作成します。
チュートリアル1  
https://docs.phalconphp.com/ja/latest/reference/tutorial.html  
 
http://127.0.0.1:8000/xxxxx  
xxxxがどんなURLでも、トップページが表示される状態になります。  
 
なにか、基本的な設定が抜けているのでしょうか。  
よろしくおねがいいたします。  
 
 
 
##### 環境  
```
$ pwd
/Applications/eclipse/workspace/tutorial
/Applications/eclipse/workspace
$ tree .
.
├── app
│   ├── controllers
│   │   ├── IndexController.php
│   │   └── SignupController.php
│   ├── models
│   └── views
│      ├── index
│      │   └── index.phtml
│      └── signup
│          └── index.phtml
└── public
   └── index.php
7 directories, 5 files
```
```
$ cat app/controllers/IndexController.php
<?php
use Phalcon\Mvc\Controller;
class IndexController extends Controller {
   public function indexAction() {
   }
}
$ cat app/controllers/SignupController.php
<?php
use Phalcon\Mvc\Controller;
class SignupController extends Controller {
   public function indexAction() {
   }
}
$ phalcon create-project store
Phalcon DevTools (3.0.4)
 Success: Controller "index" was successfully created. 
/Applications/eclipse/workspace/store/app/controllers/IndexController.php
 Success: Project "store" was successfully created.
```
で問題なく作成されましたので、PHPビルドインサーバにて起動  
 
```
$ cat app/views/index/index.phtml
<?php
echo "<h1>Hello!</h1>";
$ pwd
/Applications/eclipse/workspace/store
echo PHP_EOL;
echo PHP_EOL;
echo $this->tag->linkTo ( "signup", "Sign Up Here!" );
$ cat app/views/signup/index.phtml
<h2>Sign up using this form</h2>
<?php echo $this->tag->form("signup/register"); ?>
<p>
   <label for="name"> Name </label>
       <?php echo $this->tag->textField("name"); ?>
   </p>
<p>
   <label for="email"> E-Mail </label>
       <?php echo $this->tag->textField("email"); ?>
   </p>
<p>
       <?php echo $this->tag->submitButton("Register"); ?>
   </p>
</form>
$ php -S localhost:8000 -t public .htrouter.php
PHP 7.0.15 Development Server started at Mon Mar 13 14:30:46 2017
Listening on http://127.0.0.1:8000
Document root is /Applications/eclipse/workspace/store/public
```
```
$ cat public/index.php           
<?php
use Phalcon\Loader;
use Phalcon\Mvc\View;
use Phalcon\Mvc\Application;
use Phalcon\Di\FactoryDefault;
use Phalcon\Mvc\Url as UrlProvider;
use Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter;
この場合、アクセスするURLは
http://localhost:8000/store
// オートローダにディレクトリを登録する
$loader = new Loader ();
になると想定しているのですが、
StoreController handler class cannot be loaded
$loader->registerDirs ( [
       "../app/controllers/",
       "../app/models/"
] );
というエラーになり、
$loader->register ();
http://localhost:8000
// DIコンテナを作る
$di = new FactoryDefault ();
であれば、問題なくアクセスすることができます。
// ビューのコンポーネントの組み立て
$di->set ( "view", function () {
   $view = new View ();
   
   $view->setViewsDir ( "../app/views/" );
   
   return $view;
} );
http://localhost:8000/store
// ベースURIを設定して、生成される全てのURIが「tutorial」を含むようにする
$di->set ( "url", function () {
   $url = new UrlProvider ();
   
   $url->setBaseUri ( "/tutorial/" );
   
   return $url;
} );
$application = new Application ( $di );
try {
   // リクエストを処理する
   $response = $application->handle ();
   
   $response->send ();
} catch ( \Exception $e ) {
   echo "Exception: ", $e->getMessage ();
}
```
起動
```
$ php -S 127.0.0.1:8000 -t public
```
のURLでアクセスする場合は、なにか追加で設定が必要になるのでしょうか?
  • Phalcon

    34 questions

    Phalconは、C言語で作られたPHPフレームワークです。 C言語で書かれているため、PHP Moduleとして動作するので、 他のフレームワークに比べて高速というのが特徴です。

1 チュートリアルリンク追加

hokuhoku8

hokuhoku8 score 19

2017/02/28 12:55  投稿

Phalconチュートリアル1が動作しない
Phalconをローカル環境で動作させ、ドキュメントに記載されているチュートリアル1を実施しようとしてますが、想定どおり画面遷移しません。トップ画面は想定どおりに表示されるのですが、どのURLに遷移してもトップページが表示されてしまいます。
 
チュートリアル1  
https://docs.phalconphp.com/ja/latest/reference/tutorial.html  
http://127.0.0.1:8000/xxxxx
xxxxがどんなURLでも、トップページが表示される状態になります。
なにか、基本的な設定が抜けているのでしょうか。
よろしくおねがいいたします。
##### 環境
```
$ pwd
/Applications/eclipse/workspace/tutorial
$ tree .
.
├── app
│   ├── controllers
│   │   ├── IndexController.php
│   │   └── SignupController.php
│   ├── models
│   └── views
│      ├── index
│      │   └── index.phtml
│      └── signup
│          └── index.phtml
└── public
   └── index.php
7 directories, 5 files
```
```
$ cat app/controllers/IndexController.php
<?php
use Phalcon\Mvc\Controller;
class IndexController extends Controller {
   public function indexAction() {
   }
}
$ cat app/controllers/SignupController.php
<?php
use Phalcon\Mvc\Controller;
class SignupController extends Controller {
   public function indexAction() {
   }
}
```
```
$ cat app/views/index/index.phtml
<?php
echo "<h1>Hello!</h1>";
echo PHP_EOL;
echo PHP_EOL;
echo $this->tag->linkTo ( "signup", "Sign Up Here!" );
$ cat app/views/signup/index.phtml
<h2>Sign up using this form</h2>
<?php echo $this->tag->form("signup/register"); ?>
<p>
   <label for="name"> Name </label>
       <?php echo $this->tag->textField("name"); ?>
   </p>
<p>
   <label for="email"> E-Mail </label>
       <?php echo $this->tag->textField("email"); ?>
   </p>
<p>
       <?php echo $this->tag->submitButton("Register"); ?>
   </p>
</form>
```
```
$ cat public/index.php           
<?php
use Phalcon\Loader;
use Phalcon\Mvc\View;
use Phalcon\Mvc\Application;
use Phalcon\Di\FactoryDefault;
use Phalcon\Mvc\Url as UrlProvider;
use Phalcon\Db\Adapter\Pdo\Mysql as DbAdapter;
// オートローダにディレクトリを登録する
$loader = new Loader ();
$loader->registerDirs ( [
       "../app/controllers/",
       "../app/models/"
] );
$loader->register ();
// DIコンテナを作る
$di = new FactoryDefault ();
// ビューのコンポーネントの組み立て
$di->set ( "view", function () {
   $view = new View ();
   
   $view->setViewsDir ( "../app/views/" );
   
   return $view;
} );
// ベースURIを設定して、生成される全てのURIが「tutorial」を含むようにする
$di->set ( "url", function () {
   $url = new UrlProvider ();
   
   $url->setBaseUri ( "/tutorial/" );
   
   return $url;
} );
$application = new Application ( $di );
try {
   // リクエストを処理する
   $response = $application->handle ();
   
   $response->send ();
} catch ( \Exception $e ) {
   echo "Exception: ", $e->getMessage ();
}
```
起動
```
$ php -S 127.0.0.1:8000 -t public
```
  • Phalcon

    34 questions

    Phalconは、C言語で作られたPHPフレームワークです。 C言語で書かれているため、PHP Moduleとして動作するので、 他のフレームワークに比べて高速というのが特徴です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る