Я только что унаследовал проект в Laravel, и он использует Dingo API.
API возвращает строки типа Federaci\u00f3n
вместо Federación
.
Все строки правильно закодированы в UTF-8 в базе данных, поэтому проблема в сервере.
Контроллер возвращает $this->response->paginator($articles, new ArticlesCollectionTransformer);
и внутри ArticlesCollectionTransformer
Я поместил var_dump для строк, с которыми у меня проблемы, и они там правильно закодированы.
Куда еще мне обратиться? Что мне не хватает?
Контроллер:
public function index(Request $request)
{
$limit = (0 === (int)$request->limit || $request->limit > self::PER_PAGE) ? self::PER_PAGE : $request->limit;
$articles = Article::with('author', 'category')
->approved()
->orderBy('published_at', 'desc')
->orderBy('featured', 'desc')
->paginate($limit);
return $this->
response->
paginator($articles, new ArticlesCollectionTransformer)->
// also tried:
// withHeader('Content-type', 'application/json; charset=utf-8');
}
Transformer
class ArticlesCollectionTransformer extends TransformerAbstract
{
public function transform (Article $article)
{
// var_dump($article->title) ==> is correctly encoded
return [
'id' => (int) $article->id,
'category' => $article->category->name,
'author' => $article->author->name ?? ArticleAuthor::DEFAULT_AUTHOR_FOR_NEW_ARTICLES,
'display_order' => (int) $article->display_order,
'title' => $article->title,
'featured' => (bool) $article->featured,
'viewed_times' => (int) $article->viewed_times,
'last_update' => $article->updated_at->timestamp,
];
}
}
Подробнее:
- Laravel:
5.2.*
- Динго / API:
1.0.x@dev