Aug
22

Sinh code tự động với cake console

Author admin    Category Chia sẻ, Tutorial     Tags

Nếu lần đầu tiên bạn dùng CakePHP, bạn không rõ cách thức code như thế nào, bạn cần ví dụ mẫu, và cake console là giải pháp nhanh gọn nhất cho bạn.

Code do cake console tạo ra rất “trong sáng, đơn giản”, giúp bạn hiểu một cách nhanh chóng thay vì phải tải các bộ mã nguồn người khác viết về xem nhức cả đầu!

Bài viết này mình demo qua file video, các bạn chỉ cần xem kỹ và thực hành theo, chú ý các câu hướng dẫn của cake console để thực hiện command cho chuẩn

Để việc viết command nhanh gọn hơn, chúng ta đưa các lệnh của php và cake console thành lệnh môi trường của windows (đứng ở đâu trong cửa sổ command cũng thực hiện được lệnh). Mình dùng wamp 2.0i trong demo này.

1. Thiết lập môi trường

- Nhấn phải chuột vào My Computer chọn Properties
- Chọn tab Advanced trên cửa sổ mới, chọn tiếp Environment Variables
- Tìm và nhấn chuột lên dòng Path trong mục System variables, chọn Edit
- Thêm vào phía sau dữ liệu hiện có đường dẫn tới thư mục chưa file thực thi của php và đường dẫn tới thư mục console của thư viện cakephp (dùng dấu ; để ngăn cách)

E:\wamp\bin\php\php5.3.0;
E:\wamp\www\cakephp-1.3.3\cake\console;

(đường dẫn của bạn có thể khác)

2. Tiến hành sinh code tự động

2.1. Một số lưu ý

- Mình tải bản cakephp 1.3.3 về bỏ vào thư mục www
- Mình tạo một thư mục dự án riêng trong www có tên cake_console
- Sinh code phải theo trình tự: có model rồi mới có controller và cuối cùng là view. Nếu làm sai trình tự sẽ sinh lỗi

2.2. Tạo dự án

- Mở cửa sổ command line (vào Start/Run gõ cmd)
- Gõ lệnh:

cake bake

Khi đó cake sẽ hỏi bạn đường dẫn tới thư mục dự án bạn muốn tạo, bạn gõ đường dẫn vật lý tới thư mục dự án cake_console (E:\wamp\www\cake_console)

Tiếp theo, cake console sẽ tự động tạo cho bạn tất cả những gì cần thiết để bắt đầu một dự án với cakephp, toàn bộ file, thư mục sẽ nằm trong thư mục cake_console. Với cách làm này, bạn chỉ cần một thư viện cakephp trong khi có cả tỉ dự án! Không nhất thiết một dự án phải copy theo 1 thư viện cakephp trừ khi đưa lên hosting.

Bạn lưu ý, khi đó file index.php trong webroot sẽ có chỗ khác so với việc để chung thư viện cakephp với thư mục dự án

if (!defined('CAKE_CORE_INCLUDE_PATH')) {
   define('CAKE_CORE_INCLUDE_PATH', 'E:' . DS . 'wamp' . DS . 'www' . DS . 'cakephp-1.3.3');
}

khi đưa lên hosting, bạn phải chú ý chỗ này nếu không website của bạn sẽ không chạy vì không tìm thấy thư viện cakephp

2.3. Mời bạn xem video

- Tải file avi chất lượng cao, đã nén lại còn 3.95MB, dung lượng sau khi giải nén: 208MB -> Tải file tại đây
- Xem online thì hơi mờ

- Phần 1:

- Phần 2:

- Bài viết tại diễn đàn: http://cakephpvn.org/forum/showthread.php?tid=66&pid=272

13 Comments to “Sinh code tự động với cake console”

  • masoi 12/09/2010 at 8:01 am

    bạn ơi, mình coi phim của bạn. nhưng bạn không chú thích bằng lời nên nhiều khi mình xem cũng không hiểu. Mong bạn sẽ làm tốt hơn.^^

  • admin 12/09/2010 at 8:52 am

    Cám ơn bạn, vì mình làm cái này ở công ty nên không lồng tiếng vô được, với lại cái máy của mình hơi yếu, dùng phần mềm để lồng tiếng vào chạy không nổi, chắc sẽ dùng file word để diễn giải!

  • quanghuy 09/11/2010 at 9:33 pm

    admin mình sinh code cho news_catagories rồi đến khi sinh code cho news báo lỗi không thấy news_catagories cho catagory là sao bạn :(

  • admin 10/11/2010 at 10:13 am

    Khi sinh code cho news nếu bạn thiết lập quan hệ với new_categories thì bạn phải gõ tay tên model NewsCategory vô vì mặc định nó hiểu là Category chứ không phải là NewsCategory

  • Huỳnh Tâm 25/08/2011 at 1:53 am

    Admin cho hỏi muốn đổi lại tên hiển thị của cột thì làm sao
    VD: trong database có cột tên là “name” bây giờ tôi muốn hiển thị ra bên ngoài danh sách đổi lại là “Họ tên” thì làm sao?

    tôi xem trong file index có đoạn như thế này

    Paginator->sort(‘name’);?>

    sau đó tôi đổi lại thành

    Paginator->sort(‘Họ tên’);?>

    thì nó không còn sort được nua

  • admin 04/09/2011 at 5:39 pm

    Paginator->sort(‘name’); nghĩa là sắp xếp theo cột name, đổi cái này mà nó không phải tên field trong table thì sẽ lỗi

    Muốn text theo ý mình thì bạn dùng:

    < ?php echo $this->Paginator->sort(‘Họ tên’, ‘name’); ?>

  • nguyễn Hưng 28/09/2011 at 8:14 am

    Hi bạn anh admin
    cho mình hỏi chút về vấn đề sinh code bằng dòng lệnh ở trên
    hiện thì mình cấu hình project trên easyphp hiện tại minh gặp một số vấn đề như sau:
    mình đã tạo xong project và khi tạo model thì trên Windows power shel xuất hiện lỗi :
    Fatal eror: Call to undefined function mysql_query() in F:\Easyphp\EasyPHP-5.3.6.1\www\cakephp-1.3.10\cake\libs\model\datasources\dbo\dbo_msql.php on line 609
    và trên tran web khi chạy xuất hiện lỗi sau:
    Your tmp directory is writable.

    URL rewriting is not properly configured on your server.
    Help me configure it
    I don’t / can’t use URL rewriting

    mong mọi người giúp mình vấn đề này với :d mình mới vào nghề nên còn hơi thiếu kinh nghiệm
    Thanks All

  • admin 28/09/2011 at 11:23 pm

    1. Bạn kiểm tra trong php.ini xem nó có load cái module php_mysql lên chưa
    2. Bận bật mod_rewrite cho apache

    • nguyễn Hưng 29/09/2011 at 8:32 am

      thank anh admin.
      2 bước bạn nêu mình đều đã làm rùi nhưng hiện tại thì vẫn còn lỗi trên windows power shell
      Fatal eror: Call to undefined function mysql_query() in F:\Easyphp\EasyPHP-5.3.6.1\www\cakephp-1.3.10\cake\libs\model\datasources\dbo\dbo_msql.php on line 609

      cái này mình không hiểu nguyên nhân là như thế nào, mình đã cấu hình lại moi thứ như trong video trên nhưng hiện tại vẫn còn lỗi này
      mong mọi người giúp đỡ mình
      Thank all!

  • nguyễn Hưng 01/10/2011 at 2:00 am

    Hi all
    thank bạn admin mình đã fix xong 2 lỗi hôm trước nhưng hiện tại mình đang vướng 1 lỗi nhỏ
    khi mình thêm 1 news nhưng phần category không show ra được nhóm các tin mình đã tạo trước. xem trên video thì mình thấy admin thay newsCategories bằng categories thì nó show ra được mình chưa hiểu tại sao lại thay như vậy thì phần category lại show ra được trong quá trình thêm news vào DB
    Mong anh admin giải thích giúp mình. mấy hôm nay vọc mãi vẫn chưa hiểu bản chất của vẫn đề này
    thank admin

  • admin 12/10/2011 at 10:26 am

    Ý bạn là cái combobox chọn category? Chỗ đó bạn có thể làm cách khác đi, bạn sử dụng $form->select cho chắc ăn

    • nguyễn Hưng 30/10/2011 at 3:34 pm

      Hi admin!
      :d mình làm được rùi, thank bạn admin
      Nhân tiện cho mình hỏi thêm vấn đề:

      Hiện tại mình có một project xd chương trình chữ ký số trên nền tảng web và mình đang thực hiện dựa trên nền của cakephp và có sử dụng thư viện Openssl (openssl-1.0.0c), Do mới làm quen với cakephp nên mình không chưa rõ cấu hình như thế nào để có thể dùng thư viện này trong cakephp.
      Mong mọi người giúp đỡ,
      thank all!

  • admin 14/11/2011 at 4:46 pm

    Hình như câu hỏi của bạn có post trong diễn đàn và bạn làm ok rồi thì phải

Post comment

Follow us on Twitter! Follow us on Twitter!
Diễn đàn CakePHP cho người Việt Nam

Bài viết mới

Thảo luận mới

TAG

Calendar

August 2010
M T W T F S S
« Jul   Sep »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Lưu trữ

Blogroll

Thống kê

Danh sách: 4 khách