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

Фон

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

Что у меня есть

В настоящее время у меня есть 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 — это id компании в смс, которой принадлежит филиал или директор.

И у меня есть представление о SMME.

Какой у меня вопрос

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

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


person Bird87 ZA    schedule 16.01.2013    source источник


Ответы (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.

Вы можете прочитать больше о правилах оформления тортов здесь

person Varinder Singh    schedule 16.01.2013
comment
Спасибо за ответ. Как уже упоминалось, я очень новичок в CakePHP. В каком файле это будет? - person Bird87 ZA; 17.01.2013