Как связать таблицу базы данных с моделью в ATK? - PullRequest
2 голосов
/ 01 сентября 2011

У меня есть устаревший код, который хранит временные данные в контексте.Я хотел бы сохранить это в БД, используя следующую модель:

class Model_MyModel extends Model_Table {
    function init(){
        parent::init();
        $this->addField('myString');
    }   
}

Я могу получить доступ к данным из старого контроллера таким образом:

class Controller_LegacyController extends Controller {
    $myString = $this->api->recall("legacyString");
}

Но я не вижукак связать все вместе (все примеры используют форму для связи с БД)

Спасибо за помощь,

Грег.

1 Ответ

2 голосов
/ 01 сентября 2011

Я нахожу ваш вопрос и код несколько запутанными, но постараюсь помочь.

  1. Вам не нужен контроллер, чтобы использовать вашу модель.При вызове $ form-> setModel () он автоматически выбирает подходящий для вас контроллер.

    $ page-> add ('MVCForm') -> setModel ('MyModel');

  2. Если вы хотите отправить данные обратно в базу данных, вы должны вызвать $ form-> update ().Существует вид, который вы можете использовать, который будет делать это для вас: FormAndSave

    $ page-> add ('FormAndSave') -> setModel ('MyModel');// также сохранит данные обратно в базу данных.

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

    $ this-> api-> stickyGET ('id');$ page-> add ('FormAndSave') -> setModel ('MyModel') -> loadData ($ _ GET ['id']);

  4. метод вызывает () вызов сессийТаким образом, кажется, что вы читаете данные из сессии.Если вы намереваетесь это сделать и хотите видеть значение переменной сеанса в форме, то это будет сделано:

    $ form-> set ('myfield', $ this-> api- >all ('legacyString '));

Надеюсь, это даст вам несколько советов о том, как продолжить.Посмотрите больше примеров, их много на http://agiletoolkit.org

...