Novius-OSのアプリ活用法-(2)項目追加

hanikunです。
前回まではウィザードで作ったアプリを日本語に表示することをしました。今回は表示項目を追加することをします。

nos-1-4 nos-3-1 nos-3-3 nos-3-2

1.画面毎に関するファイルは?

ウィザードで作ったアプリは2個の画面と1個のランチャーンになっています。
/local/applications/tel_note/configの下は設定と関するコードになります。
/local/applications/tel_note/classesの下は実行処理と関するコードになります。


# 一覧画面は
/local/applications/tel_note/config/common/tel.config.php
# 詳細画面は
/local/applications/tel_note/config/controller/admin/tel/crud.config.php
# ランチャー設定(基本アプリ設定も含む)は
/local/applications/tel_note/config/metadata.config.php

今回は項目の追加及び変更なので一覧画面と詳細画面を修正します。

2.一覧に項目を追加

ウィザードで作ったアプリは一覧画面でタイトルしか見えませんでした。
そこに「受付時間」と「誰に」の項目を追加します。実際のコードは/local/applications/tel_note/config/common/tel.config.phpの’data_mapping’の下に’tel_receivetime’、’tel_toperson’を追加します。


<?php
\Nos\I18n::current_dictionary('tel_note::common');

return array(
    'controller' => 'tel/crud',
    'data_mapping' => array(
        'tel_title' => array(
            'title' => __('title'),
        ),
        'tel_receivetime' => array(
            'title' => __('receivetime'),
        ),
        'tel_toperson' => array(
            'title' => __('toperson'),
        ),
    ),

…(省略)…

3.詳細に項目を追加

ウィザードで作ったアプリは詳細画面に電話をかけてきた方の情報がないからそれを追加します。
そこに「誰から」の項目を追加します。詳細画面は/local/applications/tel_note/config/controller/admin/tel/crud.config.phpの’fields’の下に’tel_fromperson’を追加します。


<?php
\Nos\I18n::current_dictionary('tel_note::common');

return array(
    'controller_url'  => 'admin/tel_note/tel/crud',
    'model' => 'TelNote\Model_Tel',
    'layout' => array(
        'large' => true,
        'content' => array(
            '' => array(
                'view' => 'nos::form/expander',
                'params' => array(
                    'title'   => __('電話受付ノート'),
                    'nomargin' => true,
                    'options' => array(
                        'allowExpand' => false,
                    ),
                    'content' => array(
                        'view' => 'nos::form/fields',
                        'params' => array(
                            'fields' => array(
                                'tel_title',
                                'tel_receivetime',
                                'tel_memo',
                                'tel_toperson',
                                'tel_fromperson',
                                'tel_isneedanswer'
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),
    'fields' => array(

               …(中略)…

       'tel_toperson' => array(
           'label' => __('toperson'),
           'form' => array(
               'type' => 'text',
           ),
       ),
       'tel_fromperson' => array(
           'label' => __('fromperson'),
           'form' => array(
               'type' => 'text',
           ),
       ),
       'tel_isneedanswer' => array(
           'label' => __('isneedanswer'),
           'form' => array(
               'type' => 'checkbox',
               'value' => '1',
               'empty' => '0',
           ),
       ),
   )

 …(省略)…

4.DBに項目を追加

詳細画面の項目を追加するにはDBのテーブルも追加しなきゃなりません。DBに追加する方法は多いですがNosのMigrationsを使えます。/local/applications/tel_note/migrations/の下に002_migrate_0_1_1.php、002_migrate_0_1_1.sqlのファイルを追加します。


002_migrate_0_1_1.phpの内容

<?php
 namespace TelNote\Migrations;

class Migrate_0_1_1 extends \Nos\Migration
 {
 }

 


002_migrate_0_1_1.sqlの内容

ALTER TABLE `tels` ADD `tel_fromperson` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `tel_toperson`;

この作業が終わってからアプリケーションマネジャーを確認して「アプリの変更の適」するとDBに追加されます。

これですべてが完了です。ウィザードで作ったアプリを少し修正してより便利なアプリを作ってみました。