【发布时间】:2020-05-05 03:05:57
【问题描述】:
在我的侧边栏中,我列出了默认城市。当我点击每个城市时,我会从某个 API 获取该城市的一些数据。那部分有效。在同一个侧边栏中,我还列出了一些最喜欢的城市,注册用户可以根据需要添加到该列表中,稍后他们只需单击它们就可以获取他们最喜欢的城市的一些数据。听起来很简单,但这部分不起作用。问题是 Laravel 路由系统只从我的收藏列表中为列表中的每个最喜欢的城市获取一个 ID。
这是路线:
Route::get('/favorites/{id}/', 'FavoriteController@show')->name('showFavoriteWeather');
这是控制器:
public function show($id){
$favorite_city = Favorite::find($id);
// dd($favorite_city);
$api_key = "";
$url = "api.openweathermap.org/data/2.5/group?id=$favorite_city->city_id&units=metric&appid=$api_key";
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json_response = curl_exec($ch);
$data = json_decode($json_response, true);
// dd($data);
return view('showFavoriteWeather', compact('data'));
}
喜欢的城市在侧边栏中列出得很好,但每个链接的 URL 相同:localhost:8000/favorites/3
ID 始终为 3,而棘手的部分是我的收藏夹表中实际上没有任何具有该 ID 的内容。我一天前删除了那行。所以我的问题是为什么我最喜欢的城市的 URL 中只显示 ID 3?我使用的数据库是 MySQL。
除此之外,当我将 URL 中的 ID 3 手动更改为 1 或 2 或我数据库中的任何其他 ID 时一切正常 - 我得到了我选择的城市所需的数据。
blade 中组装不起作用的链接的代码如下所示:
<ul>
@foreach ($favorites as $key => $favorite)
<li><a href="{{ route('showFavoriteWeather', $id) }}">{{ $favorite->city_name }}</a></li>
@endforeach
</ul>
【问题讨论】:
-
在你的终端上试试这些
php artisan view:clearphp arisan cache:clearphp artisan config:clear -
我做到了。它不起作用。不过都一样
-
如果您的问题是显示相同 url 的链接列表,您应该发布组装这些链接的代码/刀片。
-
能否提供与此刀片相关的控制器方法?我相信你没有在那里定义 $id 变量。
标签: php laravel url controller routing