컨트롤러 IndexController와 FontCorrector를 만들었습니다. 그리고 IndexController에서 FontCorrector 메소드를 사용하고 싶습니다. 내 FontCorrector 코드 :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FontCorrector extends Controller
{
public function ConvertToDefault($text) // Convert To Default
{
$search = array("ғ","ӣ","ҷ","ҳ","қ","ӯ");
$replace = array("г","и","ч","х","к","у");
$result = str_replace($search, $replace, $text);
$search = array("Ғ","Ӣ","Ҷ","Ҳ","Қ","Ӯ");
$replace = array("Г","И","Ч","Х","К","У");
$result = str_replace($search, $replace, $result);
$search = array("ѓ","ї","љ","њ","ќ","ў");
$replace = array("г","и","ч","х","к","у");
$result = str_replace($search, $replace, $result);
$search = array("Ѓ","Ї","Љ","Њ","Ќ","Ў");
$replace = array("Г","И","Ч","Х","К","У");
$result = str_replace($search, $replace, $result);
return $result;
}
public function ctd($text)
{
$text = $this->ConvertToDefault($text);
return $text;
}
?>
여기서 내 IndexController와 메서드 호출은 FontCorrector 컨트롤러 메서드를 호출하는데 성공하지 못했습니다 :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\FontCorrector as fc;
class IndexController extends Controller
{
public function exec(Request $request)
{
if($request->input('lang-input') !== null)
{
echo fc::ctd($request->input('lang-input'));
}
return view("index");
}
}
?>
ErrorException :"정적 메소드가 아닌 App \ Http \ Controllers \ FontCorrector :: ctd ()를 정적으로 호출해서는 안됩니다"
- 답변 # 1
- 답변 # 2
이 문제를 해결하는 방법은 여러 가지가 있지만 가장 간단한 방법을 알려 드리겠습니다 그러나 이것은 특히 라 라벨보다 객체 지향 프로그래밍과 더 관련이 있습니다.
메소드를 호출하기 전에 코드에서 FontCorrector를 인스턴스화해야합니다. ctd ()는 정적 메서드가 아니기 때문입니다.
IndexController를 다음과 같이 수정하면됩니다 :
namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Traits\FontCorrector; class IndexController extends Controller { use FontCorrector; public function exec(Request $request) { if($request->input('lang-input') !== null) { echo $this->ctd($request->input('lang-input')); // call it } return view("index"); } }
이와 같은 일을하는 데 많은 문제가 있지만 다른 일보다 먼저 일을하고 싶다는 것을 이해합니다.
- 답변 # 3
다른 컨트롤러에서 컨트롤러 인스턴스를 호출하거나 인스턴스화하지 않는 것이 좋습니다. 사용자 정의 도우미를 사용할 수 있습니다. 그러나 정말로 이런 식으로하고 싶다면
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\FontCorrector as fc; class IndexController extends Controller { public function exec(Request $request) { if($request->input('lang-input') !== null) { $fc_obj = new fc; echo $fc_obj->ctd($request->input('lang-input')); } return view("index"); } } ?>
에서 , 당신은 라 라벨 의존성 주입을 사용할 수 있습니다. 이것이 이것이 더 좋은 방법이라고 생각합니다.IndexController
- 답변 # 4
다른 컨트롤러에서 액세스하기 때문에 "ConvertToDefault"및 "ctd"함수를 "공용 정적 함수"로 초기화해야합니다.
이 방법을 시도하십시오 :
namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\FontCorrector; class IndexController extends Controller { public function exec(Request $request, FontCorrector $fc) { if($request->input('lang-input') !== null){ echo $fc->ctd($request->input('lang-input')); } return view("index"); } }
public static function ConvertToDefault($text) // Convert To Default { $search = array("ғ","ӣ","ҷ","ҳ","қ","ӯ"); $replace = array("г","и","ч","х","к","у"); $result = str_replace($search, $replace, $text); $search = array("Ғ","Ӣ","Ҷ","Ҳ","Қ","Ӯ"); $replace = array("Г","И","Ч","Х","К","У"); $result = str_replace($search, $replace, $result); $search = array("ѓ","ї","љ","њ","ќ","ў"); $replace = array("г","и","ч","х","к","у"); $result = str_replace($search, $replace, $result); $search = array("Ѓ","Ї","Љ","Њ","Ќ","Ў"); $replace = array("Г","И","Ч","Х","К","У"); $result = str_replace($search, $replace, $result); return $result; } public static function ctd($text) { $text = TestController::ConvertToDefault($text); return $text; }
관련 자료
- 특히 특정 열에 대한 일대 다 관계에서 laravel 감소 방법을 사용하는 방법
- java - 모든 컨트롤러 및 요청 매핑 방법을 얻는 방법
- php - 라 라벨 인증 - 게시 방법/로그인 아무것도하지 않음
- php - 라 라벨 컨트롤러의 트리밍 입력
- 라 라벨에서 POST 메소드에 대한 대체 경로?
- php - Laravel, Eloquent를 사용하여 데이터 페이지 매김 검색 및 get 메소드가 다른 출력을 반환하는 경우
- c# - 상속 된 컨트롤러에서 MVC가 컨트롤러 메서드를 무시하는 이유는 무엇입니까?
- php - 패키지에 네이티브 라 라벨 "매직"메소드 허용
- php - laravel에서 swoole을 사용하여 올바른 경로 및 컨트롤러를 어떻게 수행 할 수 있습니까?
- php - laravel ColumnDefinition 클래스의 메소드는 어디에 구현되어 있습니까?
- php - Laravel 클로저를 사용하여 컨트롤러의 __invoke () 메서드를 호출하려면 어떻게해야합니까?
- Laravel, 내 home.blade.php에 관련 테이블의 관련 이름을 표시하는 방법은 무엇입니까?
- php : jwt를 사용하여 Laravel에 성공적으로 로그인한 후 오류 401
- php : eval()을 사용하는 이미지가 Laravel에 표시되지 않습니다.
- php : Laravel에서 종속성 주입을 사용하여 객체 또는 변수 값을 클래스 생성자에 전달하는 방법은 무엇입니까?
- php : Laravel 8/Mailchimp: cURL 오류 60: SSL 인증서 문제: 로컬 발급자 인증서를 가져올 수 없습니다.
- php : Laravel 서버가 시작된 후 닫힙니다.
- php : Laravel 419 csrf 토큰 불일치 오류, 포스트 데이터 오류
- php : 피벗 테이블 데이터 가져오기
- php : Laravel Storage:put을 사용하여 새 줄로 구분된 값으로 배열을 출력하는 방법:put
- php : 라라벨 FTPES 연결
이렇게 전화 할 수 있습니다
하지만 그에 대한 특성을 만들 수있는 더 좋은 방법이 있습니다
와이즈 비즈처럼 파일을 만든 다음
FontCorrector.php
및IndexController
특성에이 패키지를 사용하십시오 : https://github.com/ajayexpert/artisan-trait-maker