Inflector::slug()
データベースから取得したすべての結果を使用する必要があります。もちろん、これらは配列で取得されます。どういうわけか可能ですか、または各結果をループしてスラッグ化する必要がありますか?
ありがとう!
PHP のarray_map()
関数は、必要なことを実行する可能性があります (ただし、単純なインデックス付き配列を想定しています)。
array_map( 'Inflector::slug', $your_result )
より複雑なものを検討している場合は、CakePHP のSet
ユーティリティ クラスが複数ステップの実装で役立つ場合があります。
私はこれを CakePHP コンテキスト (つまり、CakePHP クラス メソッドを介したマッピング) で試したことはありませんが、頭の中で動作しない理由は思いつきません。たぶん、少なくとも始めることができます。
使用できる配列に応じて、array_walk
またはarray_walk_recursive
.
このようなものがうまくいくはずです。
これは 5.3+ 用です。
array_walk_recursive($posts, function(&$value) {
$value = Inflector::slug($value);
});
特定のフィールドに制限したい場合は、次のようにすることもできます。
array_walk_recursive($posts, function(&$value, $key) {
if ($key == 'title') {
$value = Inflector::slug($value);
}
});
私はしばらく Cake を使っていませんが、Rob Wilkerson が言ったように、このSet
クラスを使えばより簡単に作業できることがわかるかもしれません。