如何更改URL laravel 4中的空格

时间:2014-07-21 10:45:53

标签: php laravel laravel-4

大家好我试图链接到单个产品,但我想将空格改为" - " beetwen的话。例如,我有产品名称产品示例产品和Laravel生成网址:示例%20Product。我尝试自己做,但它不起作用我在php中删除空格但是当我添加" - "链接坏了。这是我的路线和视图

Route::get('/prod/{prodName}-{id}', 'ProductController@getSingleProduct')->where('prodName', '\w+ ');

@foreach($products as $product)
<div class="col-md-12 item">
    <?php $series = str_replace(' ', '-', $product->name); 
        $series1 = strtolower($series);
    ?>                          
    <a href="{{URL::to('/')}}/prod/{{$series1}}-{{$product->id}}"><img src="{{URL::to('/')}}/images/{{$product->photo}}.jpg" class="img-responsive thumb pull-left" alt="">
        <div class="desc">
            <h3>{{$product->name}} </h3>
            {{$product->id}}
            <img src="images/review2.png" alt="" class="pull-left"><p>4 of 3 reviews</p>
            <p class="latest-rev"><span>Latest Review:</span> {{$latestReview[0]->description}}  </p>
        </div> 
    </a>    
</div>
@endforeach

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

Laravel&#39; S

Str::slug('My favourite product');

返回:

my-favourite-product

所以你可以使用它。所以只是:

{{Str::slug($product->name)}}

是你想要的。

现在,遵循此策略会导致路由问题。 Laravel被告知你的路由声明,在-之后的第一个id之后是http://www.mypage.com/my-nice-product-115 参数。当你的网址是这样的时候:

my

然后Laravel认为单词prodName是名为nice-product-115的参数,其余部分表示id是名为http://www.mypage.com/115/my-nice-product 的参数。所以这永远不会奏效。

如果我是你,我会使用像这样的网址:

id

并且在我的控制器方法中,我将匹配Route::get('/prod/{id}/{prodName}', ['as'=>'product.show', 'uses' => 'ProductController@getSingleProduct']); 参数等。路线也将是:

Str::slug()

我肯定会利用之前提到的{{route('product.show', [$product->id, Str::slug($product->name)])}} 方法。所以把它叫做行动:

{{1}}

可以胜任。

答案 1 :(得分:0)

问题可能是你的路线:

Route::get('/prod/{prodName}-{id}', 'ProductController@getSingleProduct')->where('prodName', '\w+ ');

最后你有空白区域。你应该把它改成:

Route::get('/prod/{prodName}-{id}', 'ProductController@getSingleProduct')->where('prodName', '[\w-]+');

不允许空格并允许prodName中的-

现在当你有空格时,意味着这个空间需要匹配prodName