2013-01-16 3 views
1

фонаCakePHP - один вид, несколько вложенных форм, несколько таблиц

Я получил задание написать онлайновую базу данных для малого бизнеса. Эта база данных включает в себя множество информации, а также информацию об их директорах и филиалах. Поскольку у любого бизнеса может быть неограниченное количество директоров и филиалов, мне нужно создать базу данных, которая не ограничивается только одним директором и/или филиалом.

Что я имею

В настоящее время у меня есть 3 таблицы.

smmes [id, company_name, trading_name, business_address, registration_number, tax_reference, vat_number, bbbee_status, employees, awards, created, modified] 
ownerships [id, smme_id, name, surname, gender, age, race, disability, qualification, created, modified] 
branches [id, smme_id, location, contact_number, contact_person, created, modified] 

Примечание: smme_id является идентификатором компании в smmes, к которой принадлежит филиал или директор.

И у меня есть вид для SMME.

Что мой вопрос

Я новичок в CakePHP (на самом деле, это мое первое приложение я создаю с CakePHP). Я хочу знать, как я могу создать одну форму, где пользователь может ввести все эти детали, а затем добавить детали для всех директоров и филиалов из одного представления. Я бы предпочел, чтобы у них не было разных взглядов, чтобы создать все детали. Добавьте к этому, это одно представление должно затем сохранить все данные в правильные таблицы с правильным smme_id.

Возможно ли это, или я должен оставить cakePHP и написать его вручную.

ответ

1

Вы можете загрузить модель по требованию в ваш контроллер, а затем передать данные, специфичные для модели (полученные из опубликованной формы), в метод сохранения загруженной модели.

public function detail(){ 

    if($this->request->is('post')): // update only when form is posted 

     $this->loadModel('ownerships'); 
     $owner_name= $this->request->data['Ownername']; 
     $ownerships_data = array('Ownership' = > array(
          'name' = > $owner_name 
          //add other keys from posted form 
          ) 
         ); 
     $this->Ownership->saveAll($ownerships_data); 
    // load other models for saving posted data in related tables 
    endif; 
} 

Аналогичным образом загрузите другие модели и отправьте поля с опубликованной формы в виде массива в метод сохранения. Пусть формат URL является http://example.com/director/detail Так вы хотели бы поставить выше метод (называемый как действие в терминологии MVC) в app/controllers/directors_controller.php

Вообще, если формат URL является http://somesite.com/abc/xyz он будет искать xyz действия в app/controllers/abcs_controller.php

Вы можете Узнайте больше о конвенциях на выпечку here

+0

Спасибо за ответ. Я очень новичок в cakePHP, как упоминалось. В каком файле это будет идти? – Albert

+0

Ваш контроллер – icebreaker

Смежные вопросы