MỤC LỤC
Navigate to the Gii tool via http://localhost/trackstar/index.php?r=gii, and choose the Model Generator link. Navigate to the Gii generator menu at http://localhost/trackstar/index.php?r=gii, and choose the Crud Generator link.
Thêm mã dự án cho từng URL cho việc tạo mới sản phẩm là một giai đoạn khá tốt để chắc chắn rằng những điều chỉnh bên ngoài làm việc một cách hoàn hảo.Tuy nhiên, chúng ta có một vấn đề xảy ra với mã code là projectID luôn luôn =1 .Tất nhiên, điều này không phải là những gì chúng ta muốn.Chúng ta muốn có menu option cho việc tạo mới sản phẩm trong trang chi tiết của dự án.Nghĩa là , khi bạn lựa chọn một dự án từ trang danh sách chi tiết các dự án, mã dự án đặc biệt sẽ phải được hiểu và phải có mã dự án động. Trước tiên điều chỉnh actionView() trong class Project Controller giống như chúng ta muốn trưng bày danh sách sản phẩm liên quan đến các dự án đặc biệt.Chúng ta có thể làm điều này trong một vài trang giống như trang chi tiết.Phương thức Action View() là method được dùng để hiển thị chi tiết sản phẩm.
Chúng ta cần làm một số thay đổi điều chỉnh sao cho chúng ta quản lý được nhiều người dùng.Điều này sẽ khiến ta phải mở rộng thêm bảng người dùng (table user) và thêm các chức năng cần thiết để quản lý. Như tất cả các thực thể của chúng tôi bảng tbl_project, tbl_issue, tbl_user có các cột tương tự quy định, chúng tôi sẽ thêm vào các logic cần thiết cho một lớp cơ sở chung và sau đó có mỗi của các lớp cá nhân AR mở rộng từ lớp cơ sở mới này. Thay vì lặp lại trong các mã trong tất cả các lớp mô hình AR, cách tiếp cận này sẽ cho phép chúng tôi để thiết lập các lĩnh vực này cho tất cả các lớp mô hình AR chỉ trong một nơi.
Tùy thuộc vào yêu cầu ứng dụng, chúng tôi có thể cần phải xác nhận một tên người dùng và mật khẩu đối với giá trị được lưu trữ trong một cơ sở dữ liệu, hoặc cho phép người dùng đăng nhập với OpenID thông tin của họ, hoặc tích hợp với một phương pháp tiếp cận LDAP hiện có. Bây giờ chúng ta hiểu toàn bộ quá trình xác thực, chúng ta có thể dễ dàng nhìn thấy nơi mà chúng ta cần phải thực hiện thay đổi để sử dụng bảng tbl_user của chúng tôi để xác nhận tên người dùng và các thông tin mật khẩu được cung cấp theo hình thức đăng nhập. Khi các hàng người dùng ban đầu vào bảng với các giá trị null cho thời gian đăng nhập cuối cùng, có một kiểm tra nhanh chóng cho null để chúng tôi có thể lưu trữ một thời điểm thích hợp khi người sử dụng các bản ghi trong thời gian đầu tiên.
Sau khi thực hiện những thay đổi này, ứng dụng sẽ yêu cầu đăng nhập trước khi truy cập vào bất kỳ dự án, vấn đề của chúng tôi, hoặc chức năng của người sử dụng. Chúng tôi vẫn cho phép người dùng truy cập vô danh với phương pháp hành động SiteController lớp học, chúng tôi lưu giữ bởi vì đây là nơi hành động của mình đăng nhập. Hệ thống cấp bậc này cho phép kế thừa các điều khoản như vậy đó, đưa ra ví dụ này, nếu người dùng được phân công vai trò chủ sở hữu, họ thừa hưởng được sự cho phép để thực hiện tạo, chỉnh sửa, và xóa các hoạt động người dùng.
Điển hình trong RBAC, bạn chỉ định một người sử dụng một hoặc nhiều vai trò và người sử dụng kế thừa các quyền đã được giao cho những vai trò. Tuy nhiên, trong mô hình này, chúng tôi có thể kết hợp người dùng cho bất kỳ mục ủy quyền, không chỉ những kiểu vai trò. Nếu chúng ta chỉ muốn cấp các hoạt động người sử dụng xóa một người dùng cụ thể, và không cung cấp cho họ tất cả các truy cập vào một vai trò chủ sở hữu sẽ có,.
Điều này cho phép chúng ta sự linh hoạt để kết hợp một sự cho phép người dùng ở bất kỳ mức độ granularity. Cuối cùng, bảng AuthAssignment là một bảng liên kết giữ mối liên hệ giữa một người sử dụng và một mục cho phép. (Lưu ý đây là lược đồ mặc định đã được tạo sẵn khi thực hiện tạo khung) Để dễ dàng chúng ta thực hiện luôn với các table đã có sẵn.
Chủ sở hữu có tất cả các quyền được liệt kê, cộng với họ thừa hưởng tất cả các quyền từ thành viên và vai trò đọc. Những gì chúng tôi bây giờ cần phải làm là thiết lập hệ thống phân cấp trong ứng dụng cho phép này. Như đã đề cập trước đó, cách tốt nhất để làm điều này là để viết mã để sử dụng các API authManager.
Các mô hình RBAC chỉ nhằm mục đích thiết lập các mối quan hệ giữa các vai trò và quyền truy cập. Để đạt được điều này kích thước thêm hệ thống phân cấp ủy quyền của chúng tôi, chúng tôi sẽ tạo ra một bảng cơ sở dữ liệu riêng biệt để duy trì mối quan hệ giữa người sử dụng, vai trò và một dự án. Các khởi tạo DDL cho bảng này là như sau: phi vào (/webroot/framework/web/auth/schema-mysql.sql).
Nó không biết (và cũng không nên nó) bất cứ điều gì về các dự án TrackStar của chúng tôi.
* Returns an array of available roles in which a user can be placed when being added to a project. Chỉ được dùng giống như form đăng nhập chúng ta đang tạo một form model class mới như là một trung tâm lưu trữ form input các tham số và tập trung lại các user hợp lệ.
Các ý kiến sẽ hình thành một cuộc trò chuyện về vấn đề này và cung cấp một ngay lập tức, cũng như bối cảnh lịch sử để giỳp theo dừi tuổi thọ của bất kỳ vấn đề nào. Chúng tôi cũng sẽ sử dụng để chứng minh sử dụng Yii vật dụng và thiết lập một mô hình portlet cung cấp nội dung cho người sử dụng (để biết thêm thông tin về Portlet, hãy truy cập http://en.wikipedia.org/wiki/Portlet). Khi một người dùng đang xem các chi tiết của bất kỳ vấn đề dự án, họ sẽ có thể đọc tất cả các ý kiến trước đây đã được thêm vào như là cũng như tạo ra một nhận xét mới về vấn đề này.
Khả năng cho người dùng tham gia vào một cuộc đối thoại về các vấn đề của dự án là một phần quan trọng của bất kỳ cụng cụ theo dừi vấn đề cung cấp. Chúng ta hãy thay đổi một trong những tên createUser là author , vì điều này liên quan đến người sử dụng không đại diện cho tác giả của bình luận. // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below.
Các thuộc tính quan hệ được đặt tên cho chúng ta khi class model được tạo ra. Để thực hiện được điều này, ta sẽ điều chỉnh Issue controller class để xử lý các comment cũng như thay đổi chi tiết sản phẩm hiển thị các lời comment hiện có và tạo comment mới từ.
Nếu comment tạo ra thành công, trang sẽ được làm mới hiển thị các nhận xét mới được tạo ra. Các thay đổi được thực hiện để IssueController:: ActionView () chịu trách nhiệm cho cuộc gọi phương pháp mới này và cũng có thể cho ăn các trường hợp nhận xét mới để xem.
Để thực hiện theo quy định với các định dạng RSS cụ thể, mỗi mục cá nhân của chúng tôi tối thiểu phải có tiêu đề, liên kết, và mô tả. Chúng tôi cũng đã bổ sung thêm hai lĩnh vực tùy chọn, một gọi là lastUpdate, Zend_Feed dịch lĩnh vực RSS pubDate, và một để xác định tác giả. Đối với một, chúng tôi sử dụng createAbsoluteUrl của các bộ điều khiển () phương pháp, chứ không phải chỉ createUrl () để tạo ra một URL đầy đủ.
Tạo một chủ đề mới cho các ứng dụng của chúng tôi bằng cách tạo ra bố trí mới, CSS và các tập tin tài sản khác để cung cấp các ứng dụng với một thiết kế phía trước kết thúc mới.
Yii trước khi nhận dạng một thành phần ứng dụng có tên message để lưu trữ các tin nhắn được sử dụng trong một ứng dụng sử dụng. Theo mặc định, các loại nguồn tin nhắn này là CPhpMessageSource và con đường cơ sở để lưu trữ các tập tin bản dịch PHP là :protected/messages. Bây giờ, điều cuối cùng chúng ta cần làm là thực hiện gọi tới Yii:: t () để những trường (field) label được gửi thông qua bản dịch.
Again, the only real difference between what we have done previously and what we are doing now is our specification that the location of the model class is in the admin module. After choosing the Crud Generator option from the Gii tool, fill out the Model Class and Controller ID form fields as shown in the following screenshot: (Nhìn hình và đừng lo về mấy từ tiếng anh, k ảnh hưởng đến việc học đâu, lười ko muốn dịch. This alerts the tool to the fact that our model class is under the admin module and that our controller class, as well as all other files related to this code generation should be placed within the admin module as well.