Я только начал играть с литий-фреймворком PHP (v 0.10).
Я следовал краткому руководству , в котором в качестве базы данных используется MongoDB.
Чтобы узнать немного больше о литии, я хотел переключить СУБД с MonogoDB на MySQL.
Проблема, с которой я сталкиваюсь, когда я открываю /posts/
в браузере, литий показывает только пустую страницу без сообщений об ошибках. Кроме того, когда я перехожу к /posts/add/
, отображается правильная форма, но после отправки данных (которые правильно записаны в БД), литий также просто отображает пустую страницу. Что не так?
Кроме того, после прочтения документации по литию на литиевых моделях я все еще не совсем уверен, какая логика (в данном случае) принадлежит модели.
UPDATE 1:
Похоже, что есть проблема с кэшированием APC. После установки APC и переименования папки, содержащей литий, приложение работало без ошибок. Если оставить имя папки, содержащей литий, без изменений, я получил ошибку в кеше:
Warning: include(/var/www/web/frameworks/lithium/app/resources/tmp/cache/templates/template_views_layouts_default.html_886_1308416958_798.php) [function.include]: failed to open stream: No such file or directory in /var/www/web/frameworks/lithium/libraries/lithium/template/view/adapter/File.php on line 111
Warning: include() [function.include]: Failed opening '/var/www/web/frameworks/lithium/app/resources/tmp/cache/templates/template_views_layouts_default.html_886_1308416958_798.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/web/frameworks/lithium/libraries/lithium/template/view/adapter/File.php on line 111
END UPDATE 1
Я вручную настроил таблицу MySQL posts
со строками id
, title
и body
.
Моя Posts.php
модель в /app/models
:
<?php
namespace app\models;
class Posts extends \lithium\data\Model {
}
?>
Мой PostsController.php
контроллер в /app/controllers
:
<?php
namespace app\controllers;
use app\models\Posts;
class PostsController extends \lithium\action\Controller {
public function index() {
$posts = Posts::all();
return compact('posts');
var_dump($posts);
}
public function add() {
if($this->request->data) {
$post = Posts::create($this->request->data);
$success = $post->save();
}
return compact('success');
}
}
?>
И, наконец, мои взгляды index.html.php
в /app/views/posts/
:
<?php foreach($posts as $post): ?>
<article>
<h1><?=$post->title ?></h1>
<p><?=$post->body ?></p>
</article>
<?php endforeach; ?>
А также add.html.php
в /app/views/posts/
:
<?=$this->form->create(); ?>
<?=$this->form->field('title');?>
<?=$this->form->field('body', array('type' => 'textarea'));?>
<?=$this->form->submit('Add Post'); ?>
<?=$this->form->end(); ?>
<?php if ($success): ?>
<p>Post Successfully Saved</p>
<?php endif; ?>