- 投稿日:2020-03-30T16:47:40+09:00
Custom Field Suite のループで配列の最初の要素を取得する
- 投稿日:2020-03-30T15:29:51+09:00
[初心者向け] laravel ルーティング
ルーティング
アクセスしたアドレスを元に処理を割り振ること。
phpのときはwebappっていうフォルダの中にhello.phpファイルを用意すれば、http:〇〇_webapp/hello.phpでアクセスできましたが、
laravelでは特定のアドレスにアクセスすると、そのアドレスに割り当てられたプログラムが実行されます。
このように「〇〇というアドレスにアクセスしたら、✖️✖️という処理を呼び出す」
という関連付けを行っている機能。routesフォルダにあるweb.phpを開きます。
web.php<?php Route::get('/', function () { return view('welcome'); });これは、laravelのあの白いページを表示させる処理です。
ルートの情報の基本(GETアクセス)
Route::get(アドレス, 関数など);
getメソッドでアドレスと処理を割り当てる
第一引数:アドレス
第二引数:アドレスによって呼び出される処理(関数、コントローラーなど)では、web.phpをみていきましょう。
第一引数は'/'でトップページを表していて、
第二引数は関数を指定しています。
内部では、returnで返り値を指定。返される値が、そのアドレスにアクセスした時に表示される内容。
view関数を使うことで「views」フォルダのテンプレートファイルを使用できる。
(viewsファイルはresourcesフォルダにあります)では、welcome.blade.phpをみていきましょう。
laravelのところなどを書き換えてみるとブラウザに反映されているのが分かります。
@で始まる文はHTMLでもPHPでもなく、Bladeというlaravelのソースコードです。
「view」フォルダの中にテンプレートファイルが用意されそれをview関数で読み込んでいます。HTMLを出力する
次は実際に動かしてみましょう
routesフォルダのweb.phpを開いて以下を追加してくださいweb.php<?php Route::get('hello', function () { return '<html><body><h1>Hello</h1><p>This is sample page. </p></body></html>'; });書いたら、htpp://localhost:8000/helloにアクセスをすると
となれば成功です。returnでHTMLのコードを直接渡すことで、そのソースコードがWebブラウザへと送られているのが分かります。
ルートパラメータ
Route::get('〇〇/{パラメータ}', function($受け取る引数){・・・});
getの第一引数に{パラメータ}とパラメータを指定し、関数に引数を用意することで、アクセスしたアドレスからパラメータを取り出せる。web.php<?php Route::get('hello/{msg}',function($msg){ $html = <<<EOF <html> <head> <title>Hello</title> </head> <body> <h1>Hello</h1> <p>{$msg}</p> <p>これはサンプルページで作ったページです。</p> </body> </html> EOF; return $html; });今回はlocalhost:8000/hello/の後にaaaaaと入力しました。
そうすると$msgにパラメータが代入され、表示されています。先ほどのは必須パラメータといいパラメータを指定しないとエラーになります。
パラメーターをつけなくてもアクセスできるようにするには、任意パラメータを使いましょう。web.php<?php Route::get('hello/{msg?}',function($msg='no massage.'){ ・・・・とパラメータに「?」を付け、$msgに初期値を与えるとパラメータがなくてもアクセスできます。
となれば成功です。
- 投稿日:2020-03-30T11:48:43+09:00
【初心者向け】PHPマスター講座 vol.3(代数演算子を学ぼう)
みなさんこんにちは!けいです
今回は「代数演算子」について解説します!!
【PHPマスター講座】演算子とは
===========================
▶︎演算子(えんざんし)とは何か??
ひとつ以上の値 (あるいはプログラミング用語における「式」) から別の値 (制御構造が式になるように) を生み出すもの(引用先:PHPマニュアル)
見てもらうとわかるように…
マニュアルは「これでもか!」ってくらい
簡単な内容を複雑に書く天才なので今回は演算子の中でも
初心者が一番初めに学んでおくべき【代数演算子】について
一つずつ丁寧に解説していきます!
▶︎【代数演算子の「6つの種類」】?
・「+」:「足し算」
・「-」:「引き算」
・「」:「掛け算」
・「/」:「割り算」
・「%」:「剰余算」
・「**」:「累乗」
代数演算子って言葉は難しそうですが
基本的には上記「6つの種類」しかありません!なんだかホッと、安心できますよね〜
===========================
▶︎代数演算子を実践で学ぼう?(基礎編)
<?php
//足し算(「+」を使います)
echo 100+50;
echo "<br>";
//引き算(「-」を使います)
echo 100-50;;
echo "<br>";
//掛け算(「*」を使います)
echo 100*50;;
echo "<br>";
//割り算(「/」を使います)
echo 100/50;;
echo "<br>";
//剰余算(「%」を使います)
echo 100%50;;
echo "<br>";
//累乗(「**」を使います)
echo 10**2;
echo "<br>";
?>
===========================
▶︎【表示結果】
150 //【足し算】(100+50)
50 //【引き算】(100-50)
5000 //【掛け算】(100*50)
2 //【割り算】(100/50)
50 //【剰余算】(100%50)
100 //【累乗】 (10**2)`===========================
?ポイント?
・掛け算について
▶︎プログラミングだと
「×」の代わりに「*」を使います!・引数(パラメーター)の書き方について
▶︎print(1+1);と書くと、表示結果は「2」
▶︎print('1+1');と書くと、表示結果は「1+1」※引数の両端にクオテーション('')がないと
「計算式」として扱われます!※引数の両端にクオテーション('')があると
「文字列」として扱われます!===========================
▶︎代数演算子を実践で学ぼう?(応用編)
【補足】
前回執筆したVol.2の「変数を学ぼう」をベースに「変数」を使って実践的に学んでいきましょう!※「変数」の理解がまだ不安な人は、リンク先に飛んで確認お願いします!
<?php
//変数を「3種類」セット(x,y,z)
$x = 2;
$y = 3;
$z = 4;
//足し算と変数のセット
echo $x + $y;
echo "<br>";
//引き算と変数のセット
echo $z - $x;
echo "<br>";
//掛け算・足し算と変数のセット
echo $x *($y+$z);
echo "<br>";
//割り算・引き算と変数のセット
echo $x /($y-$z);
echo "<br>";
//掛け算・剰余算と変数のセット
echo $x *($y%$z);
echo "<br>";
//累乗・足し算と変数のセット
echo $x **($x+$y);
echo "<br>";
?>
===========================
▶︎【表示結果】
//足し算と変数のセット(2+3)
5
//引き算と変数のセット(4-2)
2
//掛け算・足し算と変数のセット(4+3)*2
14
//割り算・引き算と変数のセット(4-3)/2
-2
//掛け算・剰余算と変数のセット(3%4)*2
6
//累乗・足し算と変数のセット(2+3)**2
32===========================
さて、今回のPHPマスター講座 vol3(代数演算子を学ぼう)はここまでとなります!
少しでもあなたのPHP学習のお役に立てれば幸いです?
- 投稿日:2020-03-30T10:49:12+09:00
【phpbb】javascriptファイルをテンプレートごとに読み込む
javascriptファイルを特定のテンプレートで読み込みたい
phpbb3.2.5を使用しています。
ソースを見ると</body>
の直前でjqueryが読み込まれています。
該当ファイルは./styles/prosilver/template/overall_footer.html
です。
このファイルは基本的にすべてのページのフッター部分で使われています。で、そのファイルの下の方に
{$SCRIPTS}
という記述があります。/styles/prosilver/template/overall_footer.html<!-- EVENT overall_footer_after --> <!-- IF S_PLUPLOAD --><!-- INCLUDE plupload.html --><!-- ENDIF --> {$SCRIPTS} <!-- EVENT overall_footer_body_after --> </body> </html>テンプレートごとにjavascriptファイルを読み込む場合にここで表示されます。
テンプレート側の記述は以下のような感じで、
<!-- INCLUDEJS -->
タグ内にjavascriptファイルを記述します。/styles/prosilver/template/sample.html<!-- INCLUDEJS {PATH}/javascript/sample.js -->
そうすると実際に生成されるhtmlは以下のような感じになります。
sample.html<script type="text/javascript" src="./../assets/javascript/jquery.min.js"></script> <script type="text/javascript" src="./../assets/javascript/core.js?assets_version=55"></script> <script src="./../assets/javascript/sample.js?assets_version=55"></script>/* ←今回追加した部分 */
- 投稿日:2020-03-30T10:13:07+09:00
Laravel6 Eloquent で複数代入を使用したupdate()の書き方と注意点
初投稿です。
なんか公式のドキュメントに書いていない気がするので書きました。
バージョンはLaravel6で確認してまいすが、5.1~7.*は多分同じ。複数代入とは
こうじゃなくて。
$flight = App\Flight::find(1); $flight->name = 'New Flight Name'; $flight->hoge = 'New Flight Hoge'; $flight->save();こうするやつ。
App\Flight::find(1)->update([ 'name' => 'New Flight Name', 'hoge' => 'New Flight Hoge', ]);
update()
を使います。
$fillableか$guardedをModelに定義していないとエラーになります。
更新したくない値がリクエストに含まれていても、とりあえずは安心です。呼ばれてるのはこれ。実は
fill()
してsave()
してるだけ。\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php/** * Update the model in the database. * * @param array $attributes * @param array $options * @return bool */ public function update(array $attributes = [], array $options = []) { if (! $this->exists) { return false; } return $this->fill($attributes)->save($options); }実は二種類あるupdate()
ここが注意点です。
こんな風に書いてしまった場合App\Flight::where(['id' => 1])->update([ 'name' => 'New Flight Name', 'hoge' => 'New Flight Hoge', ]);
where()
はBuilderを返すので、Builderのupdate()
が呼ばれます。\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php/** * Update a record in the database. * * @param array $values * @return int */ public function update(array $values) { return $this->toBase()->update($this->addUpdatedAtColumn($values)); }こちらは戻り値が「変更された行」ですので、
updated_at
がないテーブルとかだと、普通に0
が返ってきます。(ifで悲しいことになるやつ)
ついでに$fillable
も$guarded
も効きません。
ここに書いてる通り、Modelとか関係ないやつです。まとめ
EloquentはModelだったりBuilderだったりCollectionだったりするので注意が必要です。
- 投稿日:2020-03-30T01:28:47+09:00
qiitaの記事一覧を自分用にわかりやすく
qiitaの記事一覧がページネーションされてしまっていてタイトルを探しづらいので、
qiitaのAPIを利用して超簡易的に自分用に一覧を作りました。
{APIトークン} と {自分のユーザ名} の部分だけは書き換えてください。<? $res = exec('curl -H "Authorization: Bearer {APIトークン}" "https://qiita.com/api/v2/items?per_page=100&query=user:{自分のユーザ名}'); $json = json_decode($res); foreach($json as $a){ $tags = []; foreach($a->{"tags"} as $t){ $tags[] = "[".$t->{"name"}."]"; } ?> <a href="<?= $a->{"url"} ?>" target="_blank"><?= $a->{"title"} ?></a> <?= implode(" ", $tags) ?><br> <? } ?>これで自分の一覧がページネーションなしで表示されます。
スタイルも特に何も当てていないので適当に当ててください。
- 投稿日:2020-03-30T01:28:47+09:00
qiitaの限定公開一覧をわかりやすく
qiitaの限定公開一覧がページネーションされてしまっていてタイトルを探しづらいので、
qiitaのAPIを利用して超簡易的に自分用に一覧を作りました。
{APIトークン} と {自分のユーザ名} の部分だけは書き換えてください。<? $res = exec('curl -H "Authorization: Bearer {APIトークン}" "https://qiita.com/api/v2/items?per_page=100&query=user:{自分のユーザ名}'); $json = json_decode($res); foreach($json as $a){ $tags = []; foreach($a->{"tags"} as $t){ $tags[] = "[".$t->{"name"}."]"; } ?> <a href="<?= $a->{"url"} ?>" target="_blank"><?= $a->{"title"} ?></a> <?= implode(" ", $tags) ?><br> <? } ?>これで自分の一覧がページネーションなしで表示されます。
スタイルも特に何も当てていないので適当に当ててください。