我开始向使用 Laravel 作为前端的站点添加多语言。
但是,由于目前缺乏资源,我正在翻译字符串。翻译整个网站还需要一段时间。
唯一的挑战是,如果文本未翻译,显示的内容是关键。我想为此指定一个默认/后备字符串。
例如
{{ trans('site.'.$name) }}
Run Code Online (Sandbox Code Playgroud)
如果我将“Business”作为 $name 传递,并且在 site.php lang 文件中没有“Business”的翻译,我最终会site.Business在前端得到。这把一切都搞砸了。在最坏的情况下,如果没有site.Business,Laravel 应该输出Business.
更好的是它应该为默认/后备字符串提供一个选项。
这可能吗?
附带说明一下,是否有常用词的免费翻译?这将节省必须自己翻译所有内容的时间。
谢谢。
在几个控制器中,我必须使用相同的方法将结果显示为具有列排序功能的表:
public function showSearchResults(Request $req){
$query=Service::where('title', $req->search);
// Columns sorting
if ($req->has('order')){
$order= $req->order=='asc' ? 'asc' : 'desc';
$order_inverse=$req->order=='asc' ? 'desc' : 'asc';
} else {
$order='desc';
$order_inverse='asc';
}
...
$url=$req->url().'?'.http_build_query($req->except('sortby','order','page'));
$results=$query->with('type')->paginate(15)->appends($req->all());
return View::make('services.search_results')
->with('results', $results)
->with('url',$url)
->with('sortby', $sortby)
->with('order', $order)
->with('order_inverse', $order_inverse);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下避免DRY的最佳方法是什么?
我正在尝试构建一个包含一些常用函数的类,我可以在我的项目的任何地方使用这些函数。我不知道在哪里构建包含类的 PHP 文件,也不知道如何调用它们...谁能帮我找出所有这些东西的位置?谢谢!!!
/App/Http/Helpers/MyClasses.php
<?php
class PopularFunctions {
public function sayhi() {
echo 'hi';
}
}
?>
Run Code Online (Sandbox Code Playgroud)
/App/Http/Controllers/TasksController.php
<?php
namespace App\Http\Controllers;
use App\Http\Helpers\MyClasses;
class TasksController extends Controller {
public function index() {
$myfunctions = new PopularFunctions();
$myfunctions->sayhi();
}
}
Run Code Online (Sandbox Code Playgroud)
这将返回:找不到类“App\Http\Controllers\PopularFunctions”。
你好,我正在创建一个大型 Laravel 应用程序。
我想创建一系列辅助函数(可能是 1000 个函数)以在应用程序内的模板和模块中使用。
做这些助手的最佳实践是什么?
我刚刚阅读这篇文章,以创建一个能够从任何控制器访问的全局函数.但我不明白它是如何工作的.
我想让任何控制器都可以访问变量'services'.所以,我制作General.php并将其放在app/Http中.这是代码.
<?php
class General {
public function getServices() {
$services = "SELECT * FROM products";
return $services;
}
}
Run Code Online (Sandbox Code Playgroud)
在控制器中我包括它
<?php
namespace App\Http\Controllers;
use App\Http\General;
use Illuminate\Http\Request;
class HomeController extends Controller {
public function index() {
$title = 'Our services';
$services = General::getServices();
return view('welcome', compact('title','services'));
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到了错误Class 'App\Http\General' not found.然后我将如何能够帮助任何人都会感激不尽.
我知道如何绑定单个类:
public function register() {
$this->app->bind('search', 'Laracasts\Search\Search');
}
Run Code Online (Sandbox Code Playgroud)
但是想象一下我的Laracasts\Search\目录有这些文件:
将这四个文件/类绑定到搜索外观的最佳方法是什么?
我读了另一个不相关的问题,我们可以使用映射器。但是如何?
我是Laravel的新手,想知道处理重复代码的最佳实用方法.
我几乎在我的api-controller的所有功能中开始使用此代码:
// Validate parameters
$validator = Validator::make($request->all(), $this->validationRules);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
Run Code Online (Sandbox Code Playgroud)
所以通常我会把它放在某个功能中.但是这个代码也用在很多其他控制器中.所以这个功能也应该被其他控制器调用.
在Laravel 5中处理这个问题的最佳做法是什么?我的第一个想法是使用此功能制作一些自己的控制器,而我的其他控制器将扩展它.
喜欢:
class MyController extends Controller
{
protected function handleFailByPrameter($params)
{
....
}
}
class Api1Controller extends MyController
{
public function apicall1()
{
$this->handleFailByPrameter($this->validationRules());
}
}
Run Code Online (Sandbox Code Playgroud)
但也许有其他一些方法来处理这类事情?
我想做我自己的帮手,然后把它放进去app/http/helpers.php。这是我的助手代码:
<?php
namespace App\Helpers;
use Auth;
class helper {
public static function is_login() {
if(Auth::check()){
return True;
}else{
return False;
}
}
public static function must_login(){
if(Auth::check()){
return True;
}else{
return Redirect::to('logout');;
}
}
}
?>
Run Code Online (Sandbox Code Playgroud)
这是我的app.php代码:
'aliases' => [
'customhelper'=> App\Helpers\Helper::class
]
Run Code Online (Sandbox Code Playgroud)
当我将customhelper::is_login()其刀片文件用于工作时。但是当我尝试在控制器中使用customhelper::must_login()它不起作用时,我遇到了一些错误
找不到类“ App \ Http \ Controllers \ customhelper”
我在 App\Helpers.php 中有一个自定义函数。当我在 Blade 文件中的 if 语句中使用该函数时。我在 Laragon 错误日志中看到错误。
PHP Fatal error: Cannot redeclare CheckInvalidPlan() (previously declared in C:\laragon\www\projectname\app\Helpers.php:6) in C:\laragon\www\projectname\app\Helpers.php on line 6
Run Code Online (Sandbox Code Playgroud)
然而事情按预期进行。但为什么会导致这个错误以及如何修复它?
#更新
这是我在 Helpers.php 中的函数
function CheckInvalidPlan($id)
{
if (Plan::find($id) == null)
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在控制器中的 if 语句。
if (CheckInvalidPlan ($request->plan_id))
{
return back()->with('invalid', 'Invalid membership plan spesified.');
}
Run Code Online (Sandbox Code Playgroud) php ×9
laravel ×7
laravel-5 ×4
class ×1
function ×1
laravel-4 ×1
multilingual ×1
namespaces ×1
translation ×1