Laravel中未定义的变量试图发布源ID路由



目前正在仪表板后面构建一个新闻api。我最近刚刚开始得到错误Undefined variable:sourceId(View:C:\Laravel8Auth\resources\views\dashboard.blade.php(。我去了所有有来源Id的地方,我看不出它可能是什么。以下是一些必要的代码,我使用Laravel 8.x和JetStream,我在这方面还很新,只是想乱搞一下。web php

`<?php
use IlluminateSupportFacadesRoute;
use AppModelsApi;
use AppHttpControllersApiController;
///Route::get('/', [ApiController::class,'displayNews']);
///Route::get('/fetchNewsFromSource', [ApiController::class, 'fetchNewsFromSource'])->name('fetchNewsFromSource');
///Route::post('/sourceId', 'ApiController@displayNews');
Route::get('/', 'AppHttpControllersApiController@displayNews');
Route::post('sourceId', 'AppHttpControllersApiController@displayNews');
Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');
`

Dashboard php

<!DOCTYPE html>
<html lang="{{ config('app.locale') }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>News Application with Laravel</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet" type="text/css">

<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

</head>
<body>
<div id="appendDivNews">
<nav class="navbar fixed-top navbar-light bg-faded" style="background-color: #e3f2fd;">
<a class="navbar-brand" href="#">News Around the World</a>
</nav>
{{ csrf_field() }}
<section id="content" class="section-dropdown">
<p class="select-header"> Select a news source: </p>
<label class="select">
<select name="news_sources" id="news_sources">
<option value="{{$sourceId}} : {{$sourceName}}">{{$sourceName}}</option>
@foreach ($newsSources as $newsSource)
<option value="{{$newsSource['id']}} : {{$newsSource['name'] }}">{{$newsSource['name']}}</option>
@endforeach
</select>

</label>
<object id="spinner" data="spinner.svg" type="image/svg+xml" hidden></object>
</section>
<div id="news">
<p> News Source : {{$sourceName}} </p>


<section class="news">
@foreach($news as $selectedNews)

<article>
<img src="{{$selectedNews['urlToImage']}}" alt=""/>
<div class="text">
<h1>{{$selectedNews['title']}}</h1>
<p style="font-size: 14px">{{$selectedNews['description']}} <a href="{{$selectedNews['url']}}"
                  target="_blank">
<small>read more...</small>
</a></p>
<div style="padding-top: 5px;font-size: 12px">
Author: {{$selectedNews['author'] ? : "Unknown" }}</div>
@if($selectedNews['publishedAt'] !== null)
<div style="padding-top: 5px;">Date
Published: {{ CarbonCarbon::parse($selectedNews['publishedAt'])->format('l jS \of F Y ') }}</div>
@else
<div style="padding-top: 5px;">Date Published: Unknown</div>
@endif

</div>
</article>
@endforeach
</section>


</div>
</div>

</body>
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!-- Scripts -->
<script src="{{ asset('js/site.js') }}"></script>

</html>
apicontroller.php应该从中获取新闻api

<?php
namespace AppHttpControllers;
use AppModelsApi;
use IlluminateHttpRequest;
use IlluminateSupportFacadesCache;
class ApiController extends Controller
{
/**
* @param Request $request
* @return IlluminateContractsViewFactory|IlluminateViewView
*/
public function displayNews(Request $request)
{
$response = $this->determineMethodHandler($request);
$apiModel = new Api();
$response['news'] = $apiModel->fetchNewsFromSource($response['sourceId']);
$response['newsSources'] = $this->fetchAllNewsSources();
return view('dashboard', $response);
}
/**
* @param $request
* @return mixed
*/
protected function determineMethodHandler($request)
{
if ($request->isMethod('get')) {
$response['sourceName'] = config('app.default_news_source');
$response['sourceId'] = config('app.default_news_source_id');
} else {
$request->validate([
'source' => 'required|string',
]);
$split_input = explode(':', $request->source);
$response['sourceId'] = trim($split_input[0]);
$response['sourceName'] = trim($split_input[1]);
}
return $response;
}
/**
* @return mixed
*/
public function fetchAllNewsSources()
{
$response = Cache::remember('allNewsSources', 22 * 60, function () {
$api = new Api;
return $api->getAllSources();
});
return $response;
}
}

您应该将带有变量的数组传递给视图

view('dashboard', ["sourceId" => 1, /* and so on */]);

我不明白你在那里干什么。

最新更新