IT技術に関する情報掲載サイト

プログラミングに関することを掲載します。

laravel adminで、フォームの項目の定義の仕方

laravelを使っていたら、当たり前なのかもしれないけれど、laravel初心者だったので、ちょっとやり方をさがしてしまったので、メモ程度で残しときます。

 

コントローラーをコマンドで作成すると自動で以下を作ってくれます。

$grid->column('id', __('Id'));

grid,detail,form関数にそれぞれできるので、メンテナンスしやすくするために、

ヘルパー機能を使ってみました。

 

具体的には、

resources/lang/ja/admin.php

の中を編集、

配列の中に、

"id" => "会員ID"

を追加し、

$grid->column('id', __('admin.Id'));

とすると、表示が変わります。

フォーム特有にしたい場合、

customer => [

"id" => "会員ID"

]

 

と2次元配列にして、

$grid->column('id', __('admin.customer.Id'));

と記入すると、表示がかわります。

 

最初は面倒だけど、メンテナンスが楽なので、開発するときは、こっちをつかいましょう。

laravel adminのコントローラーを作る際に出たエラー

Could not check compatibility between App\Admin\Controllers\ChartjsController::index(App\Admin\Controllers\Content $content) and Encore\Admin\Controllers\AdminController::index(Encore\Admin\Layout\Content $content), because class App\Admin\Controllers\Content is not available

一覧などを表示させないページを作成しようと思い、通常の手順で、追加して、indexを追加したら、このエラーがでた

 

対応方法としては、コントローラーの頭に

use Encore\Admin\Layout\Content;

を追加するといいみたいです。

 

 

laravel adminでChartjsをつかって、グラフをつくる

GitHubにやり方がのっているのですが、メモとして記事にアップしときます。

参考元は、こちらです。

github.com

 

・インストールの仕方

composer require laravel-admin-ext/chartjs

 

php artisan vendor:publish --tag=laravel-admn-chartjs

 

・設定

config/admin.phpのextensionsに以下を追加

 

    'extensions' => [

        'chartjs' => [
        
            // Set to `false` if you want to disable this extension
            'enable' => true,
        ]
    ]

・使い方

1.ビューファイルを追加。resources/views/admin/chartjs.blade.phpに以下の記述を追加する

<canvas id="myChart" width="400" height="400"></canvas>
<script>
$(function () {
    var ctx = document.getElementById("myChart").getContext('2d');
    var myChart = new Chart(ctx, {
        type: 'bar',
        data: {
            labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
            datasets: [{
                label: '# of Votes',
                data: [12, 19, 3, 5, 2, 3],
                backgroundColor: [
                    'rgba(255, 99, 132, 0.2)',
                    'rgba(54, 162, 235, 0.2)',
                    'rgba(255, 206, 86, 0.2)',
                    'rgba(75, 192, 192, 0.2)',
                    'rgba(153, 102, 255, 0.2)',
                    'rgba(255, 159, 64, 0.2)'
                ],
                borderColor: [
                    'rgba(255,99,132,1)',
                    'rgba(54, 162, 235, 1)',
                    'rgba(255, 206, 86, 1)',
                    'rgba(75, 192, 192, 1)',
                    'rgba(153, 102, 255, 1)',
                    'rgba(255, 159, 64, 1)'
                ],
                borderWidth: 1
            }]
        },
        options: {
            scales: {
                yAxes: [{
                    ticks: {
                        beginAtZero:true
                    }
                }]
            }
        }
    });
});
</script>

 

2.表示させたいcontrollerに以下を追加

class ChartjsController extends Controller
{
    public function index(Content $content)
    {
        return $content
            ->header('Chartjs')
            ->body(new Box('Bar chart', view('admin.chartjs')));
    }
}

詳細の使い方は、chartjsの公式サイトをご覧ください。

www.chartjs.org

 

 

wordpressの情報を更新する際にwp cliを使う方法

WPのデータを更新する際に、プラグインなどを使うことが多いですがwp cliを使える環境だったら、wp-cliを使ったほうが早いです。

 

wp-cliのインストールの仕方

wp-cli.org

 

wp-cliのリファレンスは、こちらです。

developer.wordpress.org

 

例えば、現在登録されているユーザ情報の一覧を出したい場合は、

#wp user list

developer.wordpress.org

 

user meta情報を更新した場合は、

#wp user meta update ユーザID key value

 

developer.wordpress.org

 

など、色々更新できます。

エンジニアだったら、自分で、調べてプログラムをしたほうが早いかもしれません。

 

※wp cliを実行するのには、--pathで指定するか、wordpressがインストールされているフォルダに移動してから実行してください。

APIを使ってGoogleCalenderに登録された予定を抽出する際の注意

developers.google.com

このAPIを使って、GoogleCalenderに登録されている予定を削除しようとしたら、400がでてエラーになってしまった。登録ができたのになぜだかわからないので、しらべてみた。

 

 

            // 取得時の詳細設定
            $optParams = array(
                'maxResults' => 10,
                'orderBy' => 'startTime',
                'singleEvents' => true,
                'timeMin' => $start_day->format('c') //昨日以降の予定を取得対象
            );

            $results = $service->events->listEvents($calendarId, $optParams);

そしたら、予定の抽出での範囲指定の日時の形式がまちがっていた。どうも、PHPのdate関数をつかってはだめみたいです。

色々調べたら、Carbonを使うといいみたいです。CarbonとはPHPのDateTimeクラスをオーバーラップした日付操作ライブラリです。

   use Carbon/Carbon
            $tz = new DateTimeZone('Asia/Tokyo');
            $start_day = Carbon::create(
                date("Y",strtotime($yestaday)),
                date("m",strtotime($yestaday)),
                date("d",strtotime($yestaday)),
                date("H",strtotime($yestaday)),
                date("i",strtotime($yestaday)),
                date("s",strtotime($yestaday)),
                $tz
            );

こういう細かなところは、なかなかエラーメッセージからはわからないので、原因をみつけるのには、一苦労でした。