php - 参数 1 在 Laravel 错误中传递。我不知道如何解决这个错误
问题描述
我目前正在使用语言检测和语言翻译 API。但是,这个在所有控制器上都运行良好但请求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!!!!");
}
});
});
控制器 控制器 检查通过 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;
}
}
我正在制作一个迷你翻译器,它奏效了。但这行不通。我无法弄清楚我的方式有什么问题。只是
传递给 App\Http\Controller\Home\TranslationController::translation() 的参数 1 必须是 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 中调用)
我不知道这个错误。
解决方案
您translation
在
Class TranslationController
和中使用函数名称Trait Translation
。一个是static
,另一个是instance
。调用instance
方法而不是static
. 最好使用不同的名称以避免混淆。
您当前的代码正在执行递归,甚至没有使用 trait 方法。
将特征方法重命名为其他名称并尝试。
推荐阅读
- c++ - 最小化高度之间的最大差异
- svg - 填充 SVG 的封闭空间?
- spring - 使用 IntelliJ 远程连接 AWS
- vue.js - Vuetify 组合框在重复值上调用计算的 setter 两次
- python - 我的 Python 脚本无法使用 Selenium 访问互联网
- javascript - fetch API 处理 __proto__ 是否与分配它不同?
- c# - 为什么 TreeView 没有列出我的子目录?
- java - 如何在扩展 Spock 规范的 Groovy 类中模拟 Java 可选类
- neural-network - 是否可以同时使用和训练神经网络?
- ios - 在执行最终异步 API 之前执行 1 次以上异步 API 调用