#php #laravel-8
#php #laravel-8
Вопрос:
Я все еще учусь, так что простите меня, если это глупый вопрос, но, похоже, я сам не могу найти решение.
У меня возникли проблемы с получением свойства «title» JSON и из-за ошибки, которую я получил
«Попытка получить свойство ‘tag’ для страниц, не являющихся объектами/results.blade.php:28»
Я понимаю, что $tags — это массив, а не объект.
Я выполнил foreach с $tags с
foreach ($result->теги как $tag)
Я также знаю, что $tag содержит нужные мне данные, потому что, когда я умираю и сбрасываю $tag, я получаю это
Мой вопрос в том, как мне получить доступ к неназванному JSON, который находится внутри массива?
Свойство title находится внутри массива «теги», и браузер выдает мне сообщение об ошибке, что я не могу получить к нему доступ, потому что это не объект.
Не могли бы вы, пожалуйста, помочь мне с кодом?
Вот мой контроллер
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
use GuzzleHttpClient;
class PageController extends Controller
{
// public function __construct() {
// $this->middleware('auth');
// }
public function index() {
$user = Auth::user();
return view('pages/home', compact('user'));
}
public function result(Request $request) {
// https://api.unsplash.com/search/photos?query=philippinesamp;client_id=hb-UQIJ2DMaPckaJOO5nxrC90uYnaVRGTMz3S8WHzJY
$input = $request->input('query');
$client = new Client();
// var_dump($input); die;
// dd($input);
// var_dump($request->input('query')); die;
$res = $client->request('GET', "https://api.unsplash.com/search/photos", [
"query" => [
"query" => $input,
"client_id" =>"hb-UQIJ2DMaPckaJOO5nxrC90uYnaVRGTMz3S8WHzJY",
"per_page" => 100
]
]);
$data = $res->getBody();
$data = json_decode($data);
$filteredData = [];
// return $data->results;
foreach($data->results as $result) {
$urls = $result->urls;
array_push($filteredData,$result);
foreach ($result->tags as $tag) {
$tags = $result->tags;
array_push($filteredData, $tag);
// dd($tag);
foreach($tag as $key => $value) {
if($key === 'title') {
array_push($filteredData,$value);
array_push($filteredData,$key);
// dd($filteredData);
}
}
}
$user = Auth::user();
return view('pages/results', compact('user', 'filteredData', 'input'));
}
}
Вот мой клинок
@extends('layouts/main')
@section('title')
Design Storm - Inspiration for Developers
@endsection
@section('content')
<div id="site-section">
<div class="container">
<div id="results">
<div>
<div class="search-container">
<form action="/results" method="POST">
@csrf
<input class="search" type="text" value="{{$input}}" placeholder="Search" name="query">
</form>
</div>
<div class="boxes">
<div class="row">
@foreach ($filteredData as $result)
<div class="col-md-3">
<div class="box">
<div style="position: relative; background: url('{{$result->urls->small}}') no-repeat center center;-webkit-background-size: cover;-moz-background-size: cover;-o-background-size: cover;background-size: cover; height: 200px;">
<div class="add-btn "><i class="fa fa-check" aria-hidden="true"></i></div>
</div>
@foreach ($filteredData as $tag)
<h4>
{{$filteredData->tag->title}}
</h4>
@endforeach
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
«
Комментарии:
1. Измените это
{{$filteredData->tag->title}}
в своем шаблоне на это{{$tag->title}}
2. Я сделал это, и это дало мне это сообщение об ошибке «Неопределенное свойство: stdClass:: $title» 🙁