📝
Slim 3 Framework でログ出力したりQueryパラメータひろったり。その3
その2で
Slim-Skeleton を導入してから肉付けが楽しい今日このごろ。回り道が多かったけどなんとなく理解できてきたんで。そろそろ本格的にプログラムしてみようかなとw。
ログ出力に monolog が使える
Slim-Skeleton を導入すると monolog が使えるので楽ちん。src/settings.php
に設定されているので簡単に使える。
src/settings.php
'logger' => [
'name' => 'slim-app',
'path' => __DIR__ . '/../logs/app.log',
'level' => \Monolog\Logger::DEBUG,
],
使い方は下記みたいに使えばok。詳しくはソースみてもいいかも。vendor/monolog/monolog/src/Monolog/Logger.php
$this->logger->addDebug('log');
$this->logger->addInfo('log');
$this->logger->addWarning('log');
Queryパラメータを取得
slimには、method として GET, PUT やら普通にhttpのmethodがあるわけですが、ちょっと面白いのが map つーやつ。こいつ複数のmethodを一つでうけることができる優れもので、まあしないだろうけど GET/POST両方おなじuriで受けるときに便利に使えそう。
$app->map(['GET', 'POST'], '/books', function (Request $request, $response, $args) {
とりあえずこんな感じで使ってみる。
$app->map(['GET', 'POST'], '/test_param', function ($request, $response, $args) {
$method = $request->getMethod();
$uri = $request->getUri();
// get/post
if ($request->isGet() == 1) {
echo "<br> isGet!! <br>";
$allGetVars = $request->getQueryParams();
foreach($allGetVars as $key => $param){
//GET parameters list
echo $param . "<br>";
}
//Single GET parameter
$getParam = $allGetVars['name'];
echo "<br> get name : " . $getParam . "<br>";
} else {
echo "<br> isPost!! <br>";
$allPostPutVars = $request->getParsedBody();
foreach($allPostPutVars as $key => $param){
//POST or PUT parameters list
echo $param . "<br>";
}
//Single POST/PUT parameter
$getParam = $allPostPutVars['name'];
echo "<br> post name : " . $getParam . "<br>";
}
}
getMethod()
getUri()
は、Slim Request を参照するとよい。
で、簡単なフォームを作って試してみる。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>
<body>
<form action="http://ホストip:8080/test_param" method="post">
名前:<br />
<input type="text" name="name" size="30" value="" /><br />
メールアドレス:<br />
<input type="text" name="mail" size="30" value="" /><br />
コメント:<br />
<textarea name="comment" cols="30" rows="5"></textarea><br />
<br />
<input type="submit" value="登録する" />
</form>
</body>
</html>
get/post両方に対応できるやん。簡単すなw
これで簡単なアプリつくれそーだw
次は、パラメータ受け取って色々なQueryを書いてみる。
Discussion