В настоящее время я использую API определения языка и перевода языка.Однако эта функция, которая хорошо работает на всех контроллерах, но запрашивает ajax, имеет ту же ошибку, что и заголовок.
ajax
$("#translationBtn").click(function(){
$.ajax({
url: '{{route('translation')}}',
type: 'post',
data: {_token: "{{ csrf_token() }}",
'material': $('#translationBox').val(),
},
success: function (data) {
alert(data);
}, error: function () {
alert("error!!!!");
}
});
});
Controller Значение, полученное через ajax, было проверено контроллером.
<?php
namespace App\Http\Controllers\Home;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Helper\Translation;
class TranslationController extends Controller
{
use Translation;
public function translation(Request $request){
return $this->translation($request->material,$this>langCode($request->material));
}
}
Маршрут
Route::post('translation', 'Home\TranslationController@translation')-
>name('translation');
API
<?php
namespace App\Http\Controllers\Helper;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
trait Translation
{
public static function langCode($papago){
$client_id = config('papago.client_sening_id');
$client_secret = config('papago.client_sening_secret');
$encQuery = urlencode($papago);
$postvars = "query=".$encQuery;
$url = "https://openapi.naver.com/v1/papago/detectLangs";
$is_post = true;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, $is_post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
$headers = array();
$headers[] = "X-Naver-Client-Id: ".$client_id;
$headers[] = "X-Naver-Client-Secret: ".$client_secret;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// echo "status_code:".$status_code."<br>";
curl_close ($ch);
if($status_code == 200) {
// echo $response['langCode'];
$json = json_decode($response, true);
$langCode = $json['langCode'];
} else {
echo "점검 중";
// echo "Error 내용:".$response;
}
return $langCode;
}
public static function translation($papago,$langCode) {
$client_id = config('papago.client_language_translation_id');
$client_secret = config('papago.client_language_translation_secret');
$encText = urlencode($papago);
if($langCode == "ko"){
$postvars = "source=ko&target=ja&text=".$encText;
}else if($langCode == "ja"){
$postvars = "source=ja&target=ko&text=".$encText;
}else{
$postvars = "source=ko&target=ja&text=".$encText;
}
$url = "https://openapi.naver.com/v1/language/translate";
$is_post = true;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, $is_post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
$headers = array();
$headers[] = "X-Naver-Client-Id: ".$client_id;
$headers[] = "X-Naver-Client-Secret: ".$client_secret;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// echo "status_code:".$status_code."<br>";
curl_close ($ch);
if($status_code == 200) {
$json = json_decode($response, true); //json_decode는 디코딩 된 json문자열을 연관배열로 만든다.
$translation = $json['message']['result']['translatedText'];
} else {
$translation = '점검 중';
// echo "Error 내용:".$response;
}
return $translation;
}
}
Я делаю мини-переводчик, и это сработало.Но это не работает.Я не могу понять, что не так с моим путем.Просто
Аргумент 1, передаваемый в App \ Http \ Controller \ Home \ TranslationController :: translation (), должен быть экземпляром Illuminate \ Http \ Request, строка Given, вызывать в C: xampp \ Helmer \Helabor \ Projectment 1, передаваемый в App \ Http \ Controller \ Home \ TranslationController :: translation (), должен быть экземпляром Illuminate \ Http \ Request, строка Given, вызывается из \ xperms \ Project \ triler.php: 14)
Я не знаю этой ошибки.