我正在使用从Laravel 5.7升级的Laravel 6.5构建应用程序。
我有一个字段,该字段使用Blade语法从数据库中提取文本并显示前50个字符:
...
{{ Str::limit($someValue->value, 50) }} // This worked
...
{{ Str::limit($someOtherValue->value, 50) }} // This gave error message
...
访问页面时,我得到
ErrorException (E_ERROR)
Class 'Str' not found
原始代码使用了从Laravel 5.8开始不推荐使用的帮助器类str_limit()
。
因此,当我接管该项目并升级Laravel时,我将代码更新为上述代码。
据我了解,Str::limit()
是一个全局帮助器类,无需声明任何Facade或添加别名即可工作。以上代码部分起作用的事实证明了这一点。
我实施了一项有效的修复程序:
...
{{ Str::limit($someValue->value, 50) }} // This worked
...
{{ \Illuminate\Support\Str::limit($someOtherValue->value, 50) }} // This now works
...
尽管我有一个有效的修复程序,但是代码的丑陋使我不知所措,这使我发疯,不知道为什么,其中只有1个有效?我的短毛绒和方括号突出显示告诉我没有丢失的标签。我还复制了相同的代码并应用于每种组合,只是第二个Str::limit()
无法正常工作。
有人可以告诉我为什么它会这样吗?谢谢!
答案 0 :(得分:1)
我建议您使用Mutator。当您从数据库修改数据时,这是一种好方法。不要使刀片文件混乱。
c = a - b
注意: someField 是您要限制的列。
答案 1 :(得分:0)
在控制器中,您可以使用以下代码
$('#form').change(function(a) {
mb_send_request();
}
然后
示例:-
use Illuminate\Support\Str;
如果要在View文件中使用
$limit_string = Str::limit('This is just an example', 5);
您不能将立面扩展到刀片文件。如果您想使用str,那么您已经定义了路径并使用此处限制的辅助功能。
arr 和 str 是全局功能,但是在 laravel 5.8中,它们已弃用,因此如果您想使用这个str或arr助手,那么你必须使用 Illuminate \ Support \ Str(str)并使用Illuminate \ Support \ Arr(arr)进行操作。
答案 2 :(得分:0)
好的,我发现了我的问题。
...
if (someCondition not fulfilled) {
{{ Str::limit($someValue->value, 50) }} // This actually didn't work but got skipped
} else {
'Some error message' // THIS worked
...
if (someCondition fulfilled) {
{{ Str::limit($someOtherValue->value, 50) }} // This gave error message
} else {
'Some error message' // Skipped
...
Str
帮助函数仅在Str
中为config/app.php
声明别名并清除缓存后才起作用:php artisan view:clear
和{{1 }}
php artisan config:clear
非常感谢在这里提供帮助的每个人!