C-limber's highへようこそ。
C-limber's highは山登りのサイトではなく、福岡のシステム開発・WEB制作会社 C-limber(クライマー)株式会社の技術メモブログです。
福岡でシステム開発・ホームページ制作をお探しの方はお気軽にご相談下さい。

ラベル Yii2 の投稿を表示しています。 すべての投稿を表示
ラベル Yii2 の投稿を表示しています。 すべての投稿を表示

2017年5月30日火曜日

[Yii2]便利なDBからの呼び出しと社内緑化

20:06 Posted by Unknown , , No comments

こんばんわ!

日本代表U20がベスト16で負けましたね。残念・・
エンジニアの井口です。

最近、社内に潤いが欲しいということで、植物たちを設置しました。
やっぱりオフィスに緑が増えると落ち着きますねぇ
心に余裕って大事ですね!


では、今日もYii2の便利な機能について共有します。

カラムを別名で呼び出す

モデルに設定していないプロパティ名でも、
・別名をつける
・配列化
して取り出せば、容易に参照できます。
$managers = Manager::find()
             ->select(['id', 'CONCAT_WS(\' \', name_sei, name_mei) AS name'])
             ->andWhere(['del_flg' => 0])
             ->andWhere(['shop_id' => $shop_id])
             ->orderBy(['view_order' => SORT_ASC])
             ->asArray()
             ->all();
ここでのポイントは
・selectメソッドで別名として読み出し設定(concat_wsで連結してます)
・asArrayメソッドで配列化
です。

あとはお好みで

加工しちゃいましょう。
Yii2で超便利がいい、ArrayHelperを使って、dropdownListの項目にしちゃいます
$options = \yii\helpers\ArrayHelper::map($managers, 'id', 'name');

かなり使い勝手がいいですね(^^)

そんな感じで、Yii2の便利機能の紹介でした



↓↓引き続き募集中です(^^)

弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナー、システムエンジニア、HTMLコーダーの方を求人しております。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社


2017年5月23日火曜日

[Yii2]AutoCompleteの使い方とGWの事

16:08 Posted by Unknown , No comments

もうゴールデンウィーク終わっちゃいましたね!

ほんとあっという間に終わっちゃいました。

GWに2回キャンプに行きました(^^)
エンジニアの井口です。

みなさんどうですか?案件に追われてますか?
弊社はありがたいことに、日々案件に追われております。
いつもありがとうございます。

今日はみなさんが大好きであろう、
Yii Framework2の便利な機能である、Autocomplete生成について紹介します。

Yii2でAutoCompleteを実装する

Yii2には、便利なウィジェットである、jui が実装されています。
ウィジェットというのは、Htmlの共通部分を切り出した、便利部品みたいなものですね
jui は jQuery ui の略です
読み方がわからないので、社内では「ジュイ」と読んでいます。(^_^);

参考:AutoComplete, yii\jui\AutoComplete - Yii Framework 2.0 API Documentation

Yii2の公式ドキュメントは完結に、しかもしっかりと内容が記載してあり、
かなり充実していると思うのですが、
autocompleteに関しては、公式ドキュメントに書かれていない、
ちょっと便利な使い方が見つけたので、共有します。

AutoCompleteに値を渡す

値を渡すことそのものに関しては、ドキュメントにあるように、
echo AutoComplete::widget([
    'name' => 'country',
    'clientOptions' => [
        'source' => ['USA', 'RUS'],
    ],
]);
と渡せます。
この場合、値は'USA', 'RUS'ですね。

今回はちょっとこだわって、
  • 値を生成
  • 値を別名をつけて生成
  • 選択したあとにinput[type=hidden]のdomに値を受渡し
とやってみます。

多分この部分まで読んでくれているプログラマの人たちだけだと思うので、
(しかもYii好きな)
そのコードを見てもらうのが早いですね!

AutoCompleteの便利な使い方のコード

<?php
    // autocomplete用に配列生成      
    $title_data = \common\models\CmsContent::find()
         ->select(['id as id', 'title as value']) // jsに渡すようにidとvalueを作成する idを受け渡す
         ->asArray()
         ->all();
      $page_id_datas = \common\models\CmsContent::find()
         ->select(['id as id', 'page_id as value'])
         ->andWhere(['!=', 'page_id', ''])
         ->asArray()
         ->all();
      $data = array_merge($title_data, $page_id_datas);

?>
<?= AutoComplete::widget([
     'model' => $model,
     'attribute' => 'cms_content_search',
     'options' => [
        'class' => 'form-control'
      ],
     'clientOptions' => [
        'source' => $data,
        'select' => new JsExpression("function( event, ui ) {               
    $('.ajax_cms_content_id').val(ui.item.id);               
    $('.ajax_cms_content_id_selected').show();            
}")
     ],
  ]);
?>
ポイントは
値を生成する際に、
->select(['id as id', 'title as value’]) // jsに渡すようにidとvalueを作成する idを受け渡す
このように別名でカラムを読み出している点と、

'select' => new JsExpression("function( event, ui ) {               
    $('.ajax_cms_content_id').val(ui.item.id);               
    $('.ajax_cms_content_id_selected').show();            
}")
selectされたときに実行されるjsで、
ui.item.id
で値を取り出している点です。

Yii2は本当に気が利きますね。


すごく気が利くのに、素直なところがYii Frameworkのいいところだと思います(^_^)

ちょっと便利なYii2の機能の紹介でした


↓↓引き続き募集中です(^^)

弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナー、システムエンジニア、HTMLコーダーの方を求人しております。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社


2016年4月8日金曜日

[Yii2]GridViewのfilter機能であれこれやりたい

12:55 Posted by Unknown , No comments
こんにちは エンジニアの井口です
Yii2のGridViewのお話。

一覧ページを作成するのに非常に強力なGridViewですが、
これまた強力なfilter機能を備えています。

各カラムで設定したmodelのattributeなどで勝手にfilterリングしてくれます。
↓GridViewのUI


GridViewのドキュメント
GridView, yii\grid\GridView - Yii Framework 2.0 API Documentation

今日はそのfilterで色々なことをやりたい時のメモです。

■セレクトボックスで検索させたい!


このようにセレクトボックスでフィルタリングさせたいことは多々あると思います。

コードは
[
    'attribute' => 'machine_id',
    'filter' => \yii\helpers\ArrayHelper::map(Machine::find()->asArray()->all(), 'id', 'name'),
    'value' => function($data) {
        return Html::a($data->machine_name, ['/machine/view', 'id' => $data->machine_id]);
    },
    'format' => 'html',
],
こういうふうにします。

ポイントは、
  1. filterパラメータで配列を指定する!
  2. どの検索項目に当たるか?はattributeパラメータで指定
  3. \yii\helpers\ArrayHelperを使ってその場で設定用配列をカジュアルに作成
  4. formatをhtmlまたはrawにしてリンクを表示できるようにする
以上となります。

これでFilter部分にセレクトボックスが出現します。
選択の配列が入り組む場合は、filterで渡す配列をmodelの方にstaticなmethodとして書いちゃってもいいですね。

ArrayHelperのドキュメント
ArrayHelper, yii\helpers\ArrayHelper - Yii Framework 2.0 API Documentation

■datePickerで検索させたい!!


このようにフィルター部分にでDatePickerを表示させたいこともあるかと思います。

コードは
[
    'label' => '利用日',
    'attribute' => 'use_day',
    'value' => 'ymd_date',
    'format' => 'raw',
    'filter' => \yii\jui\DatePicker::widget([
        'model' => $searchModel,
        'attribute' => 'use_day',
        'language' => 'ja',
        'dateFormat' => 'yyyy-MM-dd',
        'options' => [
            'class' => 'form-control'
        ]
    ]),
],
こうなります。

ポイントは、
  1. filterパラメータで\yii\jui\DatePickerを指定する!
  2. どの検索項目に当たるか?はattributeパラメータで指定
  3. filterパラメータの中のmodelとattributeも忘れず指定! ←重要
  4. filterパラメータの中の、modelで、$searchModelを指定!(今ループさせてるmodelを指定する)
  5. labelはおこのみで指定(attributeの自動取得に任せても良い)
以上となります。


これで簡単にフィルター部分にDatePickerが出現します。

filterにdatepickerを表示させたりということを扱っているサイトが少なかったので、
メモしておきます。

DatePickerについてはGithubにも他にいろいろあるようですが、
公式のjuiでもうまくできたので、
いまのところ他のDatePickerを使う必要ないかなって思ってます。

DatePickerのドキュメント
DatePicker, yii\jui\DatePicker - Yii Framework 2.0 API Documentation


この記事がだれかの助けになれば幸いです。




↓↓引き続き募集中です(^^)

弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナ、エンジニア、コーダの方募集中です。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社


2016年4月4日月曜日

[Yii2]backendをサブドメイン使わずに簡単に設置する方法

17:31 Posted by Unknown , No comments
こんにちは エンジニアの井口です
今日もYii2のお話です。

backendとfrontendにわかれたapp構造で、
・サブドメインを使わずに
・構造を保ったままで
簡単に設定・設置する方法です。

まぁ、やり方はすべてここに書いてあります。
yii2-app-advanced on single domain (Apache, Nginx) | Wiki | Yii PHP Framework

ln で シンボリック・リンク を作る。以上です!


$ cd /path/to/project/frontend/web
$ ln -s ../../backend/web backend

以上で完了です。

上記の例では、
ドメイン/backendで backendにアクセスできるようになります。

こういう構造に柔軟に対応できうように、
URLの指定は、
URLクラスを通して設定しましょうね。

Urlクラスの作り方は公式ドキュメントを参考に・・
Url, yii\helpers\Url - Yii Framework 2.0 API Documentation
Routing and URL Creation - Handling Requests - The Definitive Guide to Yii 2.0


以上です。




↓↓引き続き募集中です(^^)

弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナ、エンジニア、コーダの方募集中です。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社


2016年3月19日土曜日

[Yii2]サーバ側でドキュメントルートを変更できない場合のYii側の設定方法

3:06 Posted by Unknown No comments
日々お疲れ様です。
クライマーの井口です。

日々充実しすぎて大変です 笑

ところで、
レンタルサーバなどにYii2を設置する場合、
ドキュメントルートの設定変更ができず困ることがあります。
ちょうどさっき困ってました。

対処法の備考録です。
※この対処法が効かないサーバもあります。
(そもそもmod_rewriteの機能を制限しているようなへんてこサーバも有りますので要注意です)

実際のドキュメントルート: wwwディレクトリとした場合

www/app/以下にyii2を配置する想定のお話です。
yii2はbasic templateを使用した場合を想定しています。
(frontendとbackendがわかれないやつ)

www/app/config/web.php(メインの設定ファイル)に追記する内容
use \yii\web\Request;
$baseUrl = str_replace('/app/web', '', (new Request)->getBaseUrl());

return [
    'basePath' => dirname(__DIR__),
    'components' => [

        'request' => [
            'baseUrl' => $baseUrl,
        ],
        'urlManager' => [
            'baseUrl' => $baseUrl,
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '' => 'site/page'
            ],
        ],
    ],
];

www直下に.htaccess
RewriteEngine on
RewriteRule ^(.*)$ app/web/$1 [L]


app/web/直下のhtaccess
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php


このように設定した場合、トップページへのリンク方法は
Yii::$app->request->baseUrl を使わず、
Url::to(['/']);

を使いましょう。


以上、備考録でした。

-----------------------------------------------
弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナ、エンジニア、コーダの方募集中です。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 ・Iot開発 C-limber(クライマー)株式会社


2016年2月22日月曜日

[Yii2]Yii2への移行だよ

17:11 Posted by Unknown No comments
超久しぶりです。
エンジニアの井口です。

ウチの会社では
YiiFrameworkという世界でシェアは高いのですが、
日本ではとてもとても珍しい部類のフレームワークを
メインフレームワークとして使っているわけですが、
YiiFrameworkにもめでたいことに メジャーバージョンアップがあり、
大幅な仕様変更がありました。

このバージョンアップでYiiがより良くなったのですが、
とりあえずどう良くなったのか、
また、実装方法など、社内の備考録も兼ねてこれからちょこちょこと
書いていきたいと思います。

よろしくお願いします。


-----------------------------------------------
弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナ、エンジニア、コーダの方募集中です。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社