当前位置 : 主页 > 网络编程 > PHP >

Laravel — P47:最后的润色 (CMP)

来源:互联网 收集:自由互联 发布时间:2023-09-03
是时候结束这个项目并继续使用 Laravel 中更高级的功能了。在我们这样做之前,我们需要向我们的汽车管理项目添加一些额外的功能,比如删除照片。这是一个有趣的小项目,在我看来

是时候结束这个项目并继续使用 Laravel 中更高级的功能了。在我们这样做之前,我们需要向我们的汽车管理项目添加一些额外的功能,比如删除照片。这是一个有趣的小项目,在我看来比传统的待办事项列表要好一些。

在显示页面上显示所有图像

我们的展示页面有问题。我相信你已经明白了。当我们只是将 URL 添加到其他站点时,显示图像很容易。

@foreach( $car->images as $image )
<div class="w-80 bg-white p-3">
<img class="h-52 w-full object-cover" src="{{ $image->url }}" alt="{{ $image->alt }}" />
</div>
@endforeach

现在的问题是我们正在托管我们自己的图像并且需要更改​​src​​​内容。我将快速编辑其中一个页面并上传 6 张图片。​​我将从https://www.pexels.com/​​获取图像。

 Laravel — P47:最后的润色 (CMP)_上传

转到我们​​show​​对这辆特定车辆的看法会显示大量损坏的图像链接。

 Laravel — P47:最后的润色 (CMP)_上传_02

主图像有效,因为我们以正确的方式编写它,但底部图像已损坏。我们只需要使用我们的​​asset()​​助手来修复它们。

@foreach( $car->images as $image )
<div class="w-80 bg-white p-3">
<img class="h-52 w-full object-cover" src="{{ asset( 'storage/' . $image->url ) }}" alt="{{ $image->alt }}" />
</div>
@endforeach

刷新页面会产生我们想要看到的结果。

 Laravel — P47:最后的润色 (CMP)_App_03

删除图像

我们还不打算介绍删除单个图像;我们稍后会解决这个问题。现在,我们想从我们的表和存储中删除图像。

这一切都将在我们的方法中完成​​PersonalCarController::destroy​​。

public function destroy($id)
{
PersonalCar::destroy($id);

return redirect()->to('/personalcars/')->with('status', 'Your car has been deleted.');
}

在我们销毁资源之前,我们需要删除分配和图像。

public function destroy($id)
{
$car = PersonalCar::find($id);

$car->images()->delete();
$car->images()->detach();
$car->destroy($id);

return redirect()->to('/personalcars/')->with('status', 'Your car has been deleted.');
}

这段代码从表中删除图像​​images​​并从我们的数据透视表中删除关系​​image_personal_car​​。它最终从我们的表中删除了记录​​personal_cars​​。

尽管如此,我们仍然留下了现有的形象。我们需要从存储中删除图像。我们可以使用​​Storage​​外观从磁盘中删除图像​​public​​。

<?php

namespace App\Http\Controllers;

// ...
use App\Models\PersonalCar;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;

class PersonalCarController extends Controller
{
// ...

/**
* Remove the specified resource from storage.
*
* @param int $id
*/
public function destroy($id)
{
$car = PersonalCar::find($id);

foreach($car->images as $image) {
Storage::disk('public')->delete( $image->url );
}

$car->images()->delete();
$car->images()->detach();
$car->destroy($id);

return redirect()->to('/personalcars/')->with('status', 'Your car has been deleted.');
}
}

就是这样。我们终于完成了汽车管理项目。是时候继续做更大更好的事情了。

上一篇:Laravel — P46:控制器销毁(CMP)
下一篇:没有了
网友评论