Laravel 블레이드의 Vue 구성 요소 인스턴스에 PHP 변수를 전달하는 방법은 무엇입니까?
Laravel 블레이드 파일의 Vue 컴포넌트에 PHP 변수 값을 전달하려면 어떻게 해야 합니까?
예에서는 client-details가 이는 client-details에서 .Laravel
이번에는 하겠습니다.id
url 과 which which which which which 。/client/1
나 my my myVue
★★★★★★ 。
Laravel
의은 다음과 같습니다.
<client-details inline-template>
<div id="client-details" class="">
My HTML stuff
</div>
</client-details>
탑재자:
Vue.component('client-details', {
data(){
return {
clientId: null
}
},
);
나는 이미 시도했다.
:clientId="{{ $client->id }"
하지만 효과가 없다.
를 사용해야 .props
마크업을 통해 Vue의 컴포넌트에 속성을 전달할 수 있습니다.이치노
<client-details inline-template client-id="{{ $client->id }}">
<div id="client-details" class="">
My HTML stuff
</div>
</client-details>
Vue 컴포넌트:
Vue.component('client-details', {
props: [
{
name: 'clientId',
default:0,
}
]
});
컴포넌트의이 값에 수 .this.clientId
이슈 상세
HTML에서는 속성 이름을 kebab-case로 쓰지만, Vue에서는 camel-case로 씁니다.공식 문서에 더 많은 정보가 있습니다.
의 「Vue」를 .v-bind
입니다.:clientId="{{ $client->id }}"
, 는 JavaScript 안에 것을 하므로, 그 할 수 .따라서 이 경우에도 오류가 발생할 수 있습니다.이 해야 합니다.clientId="{{ $client->id }}
결장 없이요
방금 했는데 잘 되고 있어요.Larabel 5.4 및 Vue 2.x 사용.
내 구성 요소에서 개체의 속성(프로프)을 선언합니다.
props: ['currentUser'],
구성 요소가 인스턴스화된 블레이드 페이지에서 다음을 수행합니다.
<my-component v-bind:current-user='{!! Auth::user()->toJson() !!}'></my-component>
컴포넌트에서는 ""를 "camel Case"에 .currentUser
단, html은 대소문자를 구분하지 않기 때문에 kebab-case(current-user)를 사용해야 합니다.
블레이드 구문을 .{{ }}
사이의 는 php를 됩니다.htmlspecialchars
되지 않은 데이터를 사용하는 는, 을 사용합니다.{!! !!}
이 스레드를 발견했는데도 여전히 오류가 발생하는 사용자에게는 위의 Mustafa Ehsan이 정답을 제시하지만 설명하지는 않습니다.시행착오가 그걸 보는 데 도움이 됐어요.
newuser.blade의 내 컴포넌트.php
<access-request
firstname="{{ $newuser->firstname }}"
lastname="{{ $newuser->lastname }}"
accessid="{{ $newuser->id }}"
>
</access-request>
사용되는 바인딩 방법에 주목하는 것이 매우 중요합니다.위 컴포넌트에는 데이터 바인딩 이름(React 소품 등)만 기재하고 컴포넌트 소품(아래 참조)에 등록했습니다.무스타파는 이렇게 답변에 그의 구속을 적었고, 잘 작동합니다.다른 하나는 v-bind: 또는 :를 사용하는 Vue 방법이지만 반드시 큰따옴표와 작은따옴표를 사용해야 합니다.
:firstname="'{{ $newuser->firstname }}'"
따옴표가 둘 다 없으면 Vue 경고가 표시됩니다.
Access Request(액세스 요구).vue:
<template>
<div class="component">
<h3 class="">{{ firstname }} {{ lastname }}</h3>
<p>Access ID: {{ accessid }}</p>
<label for="administrator">Grant Administrator Priviledges:</label>
<input name="administrator" type="checkbox" value="True" class="mb-5"><br>
<button type="submit" class="btn btn-success">Add</button>
<button type="submit" class="btn btn-danger">Delete</button>
<hr>
</div>
</template>
<script>
export default {
name: "AccessRequest",
props: ['firstname', 'lastname', 'accessid'],
}
</script>
일부 서버 데이터를 Vue 컴포넌트에 전달해야 했습니다.그 결과 Vue 컴포넌트는$server_data
변수를 json 스크립트 태그로 전달합니다.
컨트롤러 내:
$server_data = json_encode([
"some-data" => SomeObject::all()
]);
return View::make('myview', compact('server_data'));
템플릿:
<script type="application/json" name="server-data">
{{ $server_data }}
</script>
<!-- Inserts server data into window.server_data -->
<script>
var json = document.getElementsByName("server-data")[0].innerHTML;
var server_data = JSON.parse(json);
</script>
vue 초기화에서 계산된 속성을 입력했습니다.
computed: {
'server_data': function(){
return window.server_data;
}
}
그런 다음 컴포넌트 템플릿에서 데이터에 액세스할 수 있습니다.server_data.some_object
.
이를 통해 많은 html 속성을 필요로 하지 않고 많은 구조화된 데이터를 전달할 수 있습니다.또 다른 이점은 json 인코딩에 의해 데이터가 이스케이프된다는 것입니다.이렇게 하면 큰따옴표("")가 포함된 변수를 사용하는 잠재적인 버그가 방지되어 돔이 엉망이 됩니다.
보통 php 변수를 vue에 전달하기 위해 사용합니다.
<component-name :prop-name='@json($variable)'></component-name>
언급URL : https://stackoverflow.com/questions/41520258/how-to-pass-a-php-variable-to-vue-component-instance-in-laravel-blade
'programing' 카테고리의 다른 글
C에서는 문자열 상수를 어떻게 선언합니까? (0) | 2022.08.11 |
---|---|
vuex-persisted state를 사용한 영구 상태: 다른 탭의 상태를 변환해도 첫 번째 탭의 저장 상태가 업데이트되지 않음 (0) | 2022.08.11 |
sleep() 뒤에 있는 알고리즘은 무엇입니까? (0) | 2022.08.11 |
VueJ 2.0: 서브폴더로의 전개가 공백으로 표시됩니까? (0) | 2022.08.11 |
유형 스크립트 Vue: 메서드에 동적 문자열 이름 사용 (0) | 2022.08.11 |