我正在尝试获取一个项目以显示指向PDF的链接(如果该项目具有与之关联的PDF)。我不确定if语句的格式。我正在为此使用Laravel。
这是我在项目控制器中拥有的代码:
//PDF Upload
if($request->hasFile('spec_sheet')) {
//Get file name and extension
$filenameWithExt = $request->file('spec_sheet')->getClientOriginalName();
//Get just file name
$filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
//Get Ext
$extension = $request->file('spec_sheet')->getClientOriginalExtension();
//Store file name
$fileNameOfPdfToStore = $filename. '.' .$extension;
//Upload
$path = $request->file('spec_sheet')->storeAs('public/mcelroy-specs', $fileNameOfPdfToStore);
}
$rental = new Rental;
$rental->title = $request->title;
$rental->name = $request->name;
$rental->description = $request->description;
$rental->product_image = $fileNameToStore;
$rental->spec_sheet = $fileNameOfPdfToStore;
$rental->save();
在视图中,我有这个:
@foreach($rentals as $rental)
<article class="cards-item">
<figure class="card product">
<div class="card-images">
<img src="/storage/rentals/{{$rental->product_image}}" alt="" >
</div>
<figcaption class="card-content">
<h1 class="card-title">{{ $rental->title }}</h1>
<h2 class="card-title product_title">{{ $rental->name }}</h2>
<p class="card-text" style="text-align:left;">{{ $rental->description }}
@if(!empty($spec_sheet))
<a href="{{$rental->spec_sheet}} " target="_blank">Download Spec Sheet</a>
@endif
</p>
<form action="{{ route('cart.store') }} " method="POST">
{{ csrf_field() }}
<input type="hidden" name="id" value="{{ $rental->id }}">
<input type="hidden" name="title" value="{{ $rental->title }}">
{{-- <input type="hidden" name="pickupDate" value="{{ $rental->pickupDate }}">
<input type="hidden" name="returnDate" value="returnDate"> --}}
<div class="buttons">
<div class="back">
<button class="primary button" type="submit">Add to Cart</button>
</div>
</div>
</form>
</figcaption>
</figure>
</article>
@endforeach
答案 0 :(得分:1)
似乎您正在寻找在Laravel中做某事的正确方法,但是没有正确的方法。
给予
d.layer
我要作两个更改,1)transform.position = targetWaypoint
不应该是transform.position == targetWaypoint
吗?和2)将@if(!empty($spec_sheet))
<a href="{{$rental->spec_sheet}} " target="_blank">Download Spec Sheet</a>
@endif
换成$spec_sheet
,因为我觉得在几周后回到$rental->spec_sheet
会更难理解。
因此,我建议您使用此方法应该没问题,因为Laravel中没有正确的方法。
@if(!empty(...))
答案 1 :(得分:0)
如果没有附加PDF,则上面的代码将不起作用,因为变量$ fileNameOfPdfToStore将不存在,并且将引发硬错误。但是,假设您已解决该问题并为文件名或为NULL(而不是文件路径)存储了空字符串,则可以在Rental模型中创建一个新属性,如下所示:
public function getHasSpecSheetAttribute() {
return $this->spec_sheet==null? false:true;
}
然后在您看来,您将执行以下操作:
@if($rental->hasSpecSheet)
<a href="{{$rental->spec_sheet}} " target="_blank">Download Spec Sheet</a>
@endif
为了修复PDF上传代码,只需添加else语句并将其放入其中:
$fileNameOfPdfToStore = null;
答案 2 :(得分:0)
@if(strlen({$rental->spec_sheet) > 0))
<a href="{{$rental->spec_sheet}} " target="_blank">Download Spec Sheet</a>
@endif
使用字符串长度来确定是否上传了文件名