Và hàng loạt các câu hỏi tại sao được đặt ra trong bạn. Tôi cũng vậy, khi mới nghiên cứu về zend framework. Tôi cũng đã rơi vào tình huống như vậy. Và giải pháp của tôi là chỉ có thể tìm hiểu sự trợ giúp của google. Và tự mình định nghĩa lại vấn đề theo cách mà tôi có thể hiểu.
Tiếp tục bài này, tôi sẽ nói đến hướng hoạt động và giúp các bạn phân tích cũng như tìm hiểu về quy trình xử lý trong zend framework. Để qua đó có thể mở rộng và tùy chọn trong ứng dụng của mình.
A- Zend Framework hoạt động ra sao:
Giống với bất kể một php framework nào, zend framework vận hành theo mô hình M-V-C. Vì thế bạn sẽ công cảm thấy ngạc nhiên khi tiếp xúc với quy trình này.
Ví dụ xét liên kết:
http://qhonline.info/book/viewbook/
Như vậy book được xem là một controller và viewbook được xem là một action của controller đó. Khi hoạt động, trong controller bạn sẽ khởi tạo những action như mong muốn thông qua việc thiết lập phương thức một cách cụ thể.
Ví dụ:
PHP Code:
<?php class IndexController extends Zend_Controller_Action{
public function indexAction(){
}
}Khi đó bạn bắt buộc phải khởi tạo trong views một thư mục ứng với controller là index trong scripts. Và file index.phml ứng với action là index.
Xét ví dụ khác:
PHP Code:
<?phpclass BookController extends Zend_Controller_Action{
public function indexAction(){
}
public function viewbookAction(){
}
}Như vậy, để chạy được ứng dụng. Bạn cần tạo thư mục Book trong views ứng với controller và file index.phtml, viewbook.phtml.
Cụ thể:
Mã:
application/controller/BookController.php application/views/scripts/Book/index.phtml application/views/scripts/Book/viewbook.phtml
Nội dung đầy đủ file index.php
PHP Code:
<?php
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH',
realpath(dirname(__FILE__) . '/../application')); defined('APPLICATION_ENV')
|| define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
: 'production')); set_include_path(implode(PATH_SEPARATOR, array(
dirname(dirname(__FILE__)) . '/library',
get_include_path(),
)));
require_once 'Zend/Application.php' ;$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap()->run();
PHP Code:
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH',
realpath(dirname(__FILE__) . '/../application'));
PHP Code:
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
: 'production'));
PHP Code:
set_include_path(implode(PATH_SEPARATOR, array(
dirname(dirname(__FILE__)) . '/library',
get_include_path(),
)));
PHP Code:
require_once 'Zend/Application.php' ;$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini' );
PHP Code:
$application->bootstrap()->run(); Khi chúng ta đã hiểu được vấn đề, thì chúng ta có thể viết chúng gọn lại theo cách mà ta hiểu.
PHP Code:
<?php
define('APPLICATION_PATH',
realpath(dirname(__FILE__) . '/../application')); define('APPLICATION_ENV','production'); set_include_path(dirname(dirname(__FILE__)) . '/library');
require_once 'Zend/Application.php' ;$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap()->run();
Mã:
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
Mã:
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0
Mã:
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap"
Mã:
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
Không có nhận xét nào:
Đăng nhận xét