FuelPHP で CodeIgniter のコードをなるべくそのまま動かす FuelIgniter
CodeIgniter のコードを FuelPHP に移行するとき、どうやったらいいかと考えていてひらめいたのが、なるべくそのまま動かしてみようということでした。名付けて FuelIgniter! (笑)
CodeIgniter 2.1.0 のユーザガイドにあるチュートリアルが動作するようになりましたので、公開します。
以下は CodeIgniter で記述したコントローラのソースです。
<?php class News extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('news_model'); } public function index() { $data['news'] = $this->news_model->get_news(); $data['title'] = 'News archive'; $this->load->view('templates/header', $data); $this->load->view('news/index', $data); $this->load->view('templates/footer'); } public function view($slug) { $data['news_item'] = $this->news_model->get_news($slug); if (empty($data['news_item'])) { show_404(); } $data['title'] = $data['news_item']['title']; $this->load->view('templates/header', $data); $this->load->view('news/view', $data); $this->load->view('templates/footer'); } public function create() { $this->load->helper('form'); $this->load->library('form_validation'); $data['title'] = 'Create a news item'; $this->form_validation->set_rules('title', 'Title', 'required'); $this->form_validation->set_rules('text', 'text', 'required'); if ($this->form_validation->run() === FALSE) { $this->load->view('templates/header', $data); $this->load->view('news/create'); $this->load->view('templates/footer'); } else { $this->news_model->set_news(); $this->load->view('news/success'); } } }
これを FuelIgniter に移植すると、以下のようになります。
<?php class Controller_News extends CI_Controller { public function before() { parent::before(); $this->load->model('news_model'); } public function action_index() { $data['news'] = $this->news_model->get_news(); $data['title'] = 'News archive'; $this->load->view('templates/header', $data); $this->load->view('news/index', $data); $this->load->view('templates/footer'); } public function action_view($slug) { $data['news_item'] = $this->news_model->get_news($slug); if (empty($data['news_item'])) { show_404(); } $data['title'] = $data['news_item']['title']; $this->load->view('templates/header', $data); $this->load->view('news/view', $data); $this->load->view('templates/footer'); } public function action_create() { $this->load->helper('form'); $this->load->library('form_validation'); $data['title'] = 'Create a news item'; $this->form_validation->set_rules('title', 'Title', 'required'); $this->form_validation->set_rules('text', 'text', 'required'); if ($this->form_validation->run() === FALSE) { $this->load->view('templates/header', $data); $this->load->view('news/create'); $this->load->view('templates/footer'); } else { $this->news_model->set_news(); $this->load->view('news/success'); } } }
ほとんど同じです。これなら、まだ FuelPHP になれていない人もまったく問題ありません (笑)
ソースコードは以下で公開しています。
- FuelIgniter https://github.com/kenjis/FuelIgniter/
- CodeIgniter 2.1.0 のチュートリアル https://github.com/kenjis/CodeIgniter_2.1.0_Tutorial/
なお、FuelIgninter では、まだ上記のチュートリアルくらいしか動作しませんので、ご利用の際は自分で FuelIgniter を拡張してください (w