Если вы запустите http://localhost:8000/SymVue/post, то, очевидно, вы увидите ответ в браузере.Насколько я знаю, там должно быть 2 метода.В твоем случае.Первый метод отобразит форму в браузере, а второй создаст форму ...
Вот так ....
/**
* @Route("/", name="vue", methods={"GET", "POST"})
*/
public function index()
{
return $this->render('vue/index.html.twig');
}
/**
*
* @Route("/post", name="post.form")
*/
public function formAction(){
$form = $this->createForm(PostType::class);
$view = $this->renderView('vue/form.html.twig',[
'form' => $form->createView()
]);
return new Response('This is response');
}
И говоря о вашем app.js Я думаю, вы все испортили, но в любом случае вы делаете что-то вроде этого, если хотите рендерить в PostForm.vue.Создайте post.js в папке js и напишите следующий код ..
import Vue from 'vue'
import PostForm from './Components/PostForm.vue'
new Vue({
template: '<PostForm />',
components: { PostForm }
}).$mount('#postForm');
И в вашем PostForm.vue (в вашем коде допущены некоторые орфографические ошибки)
import axios from 'axios'
import 'babel-polyfill'
export default {
name: 'PostForm',
async mounted(){
let {data} = await axios.get('/SymVue/post')
this.$refs.form.innerHTML = data.form
}
}
Теперь возвращаемсяк шаблону Twig в вашем vue / index.html.twig
{% block body %}
<div id="postForm">
<PostForm />
</div>
{% endblock %}
{% block javascripts %}
<script src="{{ asset('build/postForm.js') }}"></script>
{% endblock %}
Не забудьте добавить запись в webpack.config.js
.addEntry('postForm', './assets/js/post.js')