LaravelでスマホとPCの画面を分ける
レスポンシブだなんだ言ってもテンプレート分けること多い。 mod_rewriteで分岐するなり自前でUA確認するなりしても良いけど 端末確認してテンプレート変える程度なら以下のプラグイン入れて分岐するのが簡単。
インストールして
composer require jenssegers/agent
app/config/app.phpにプロバイダーとエイリアスを設定する
Jenssegers\Agent\AgentServiceProvider::class,
'Agent' => Jenssegers\Agent\Facades\Agent::class,
後はソース内で分岐してそれぞれのviewを表示する
<?php $agent = new Agent(); if ($agent->isMobile()) { // mobile device } else { // pc }
リリースビルドはちょくちょくやろう
Androidアプリの開発時にdebugビルドだけで開発を進めてると いざリリースビルドって時にproguardの設定で躓きやすい。 沢山パッケージ入れてると何でコケてるのかわからなくなったりするのでちょいちょいproguard適用したリリースビルドが通るのか確認しながら開発を進めた方が良いよね。 毎回だとビルドに時間掛かるし夜にでも自動ビルドさせておくのが良いのかもしれない。
GitHubでForkしたプロジェクトをcomposerで取り込む
Forkしたプロジェクトに機能を追加して使いたい場合にはcomposer.jsonで見に行くrepositoriesをしてあげる。 requireのブランチ名にdev-のプレフィックスを付けるのが重要。
... + "type": "project", + "repositories": [ + { + "type": "vcs", + "url": "ForkしたプロジェクトのURL" + } + ], "require": { ... - "Forkしたプロジェクトのcomposer.jsonに書かれているname": "*" + "Forkしたプロジェクトのcomposer.jsonに書かれているname": "dev-機能を追加したブランチ名" }, ...
InfyOm Laravel Generatorのscaffoldを変更する
Laravel Generatoのscaffoldで自動生成したいけど
自動生成で作られるコードやデザインを変えたいって時は
resourcesにscaffold用のテンプレートぶち込んでおけば好きに変更できて便利。
# テンプレートをinfyom.laravel_generator.path.templates_dirに持ってくるコマンド php artisan infyom.publish:templates # テンプレートを好みに編集する vim resources/infyom/infyom-generator-templates/scaffold/controller/controller.stub # 編集したテンプレートを使って自動生成が行われる php artisan infyom:scaffold Hoge --fromTable --tableName=hoges
現状だとテンプレートを設置した場合はswaggerを有効にするとまともに動かないので注意が必要。
get_templateでswagger-generator/templatesを見に行かなくなってしまうのが原因なのはわかるけどプルリク送れないチキン野郎。
LaravelでAdminLTEな管理画面を作るにはLaravel Generatorが良さそう
個人的にLaravelで管理画面作る時にAdminLTE使って作る事が多いからどうやるのが良いのか調べてみた。 普段は前に作ったプロジェクトから持ってきて~見たいな駄目な方法で運用してた。
bowerとかでインストールして普通に作る
まぁ特に言うことは無い。
AdminLTE持ってきてbladeで使える感じにheaderとか区切ってく感じ。
テンプレートに使うってだけで用意した後は普段通りに実装が出来るのでテンプレート用意した時点のリポジトリでも作っておけば楽ちん。
以下のページがよくまとまってる。
https://almsaeedstudio.com/blog/integrate-adminlte-with-laravelalmsaeedstudio.com
InfyOmのLaravel Generatorを使う
Laravelの弱点(と勝手に思ってる)scaffoldが素敵に出来る。
scaffoldのCUIが一行ずつで面倒だけどDBの定義から取ってくるオプションがあったりGUIで操作できる物を作成中だったり素敵。
AdminLTE以外にもmetronic等などのテンプレートに対応しているので素敵。
使い方は普通にドキュメント見るのが良いかと。
Laravelのミューテーターでちょっと便利な使い方
laravelで出力時に値を変えてくれるミューテーター。 便利だけど設定すると常に変換しちゃうのでformとかで使ってるとちょっと不便。 特定のViewだけ変換したい場合は別名のミューテーターを書いておくと便利。
<?php // $model->hogeで配列の値を表示するようにしたい。 public function getHogeAttribute($value){ return $array[$value]; } // 一応これで元の値は取れるけどFormとかでパラメーター指定しておくのだるい $model->getOriginal('hoge'); // 適当な名前のミューテーターを書いて変換後を利用したい所だけ$model->convHogeにする public function getConvHogeAttribute($value){ return $array[$this->hoge]; }
ボタンを配置したListFragmentでonListItemClickが呼ばれない場合の対処
行のレイアウトにボタン等を配置したListを作成したらonListItemClickが効かなくなって困った。 フォーカスが設置したボタンに取られるのが問題らしい? そういう時はitemのレイアウトでandroid:descendantFocusability="blocksDescendants"を指定するとうまくいくっぽい。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="blocksDescendants" > <ImageButton android:id="@+id/btn" android:src="@drawable/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>