这个主意不错,可是实践起来估计有点难吧?国内有类似这样功能设计的网站没?
安正超是挺厉害的人物啊!!!
我是终生会员来着......
再修复一个bug 自己不能给自己发私信 不然 会出现问题 应该在questions/show.blade.php视图中加入判断 代码如下:
@if(Auth::check() && user()->id != $question->user_id)
<send-message user="{ $question->user_id }" ></send-message>
@elseif(Auth::check() && user()->id == $question->user_id )
@else
<a href="{url('user/login')}" class="btn btn-default">发送私信</a>
@endif
这里对应的每个答案下面的评论要是新增评论了 answer表的comments_count 字段就要执行加一操作 如果有删除评论的话就要执行减一操作 这里没有做删除评论功能
对于question表的 comments_count 字段也是一样
在 store方法中 加入以下代码 得意于前面的 repository模式 这里代码做到了很好的共用
$model = $this->getModelNameFromType(request('type'));
if($model === 'App\Question')
{
$question = $this->questionRepository->byId(request('model'));
$question->increment('comments_count');
$question->save();
}else{
$answer = $this->AnswerRepository->byId(request('model'));
$answer->increment('comments_count');
$answer->save();
}
如果Vuejs是2.0以上 不再支持直接对 props:里面的数据直接操作 我们可以建立副本 再来操作
props:['answer','count'],
data() {
return {
voted :false ,
voted_count: this.count
}
},
computed: {
text() {
return this.voted_count
}
},
methods:{
vote() {
axios.post('/api/answer/vote',{'answer':this.answer}).then(response => {
this.voted = response.data.voted
response.data.voted ? this.voted_count ++ : this.voted_count --
})
}
}
laravel 版本 Laravel Framework 5.7.5
Vue.js 版本 "vue": "^2.5.7"
node 版本 v8.12.0
npm 版本 :6.4.1
线上环境 运行 没有任何 问题 注意 有两点改变 laravel 不再使用gulp 编辑前端资源文件了 执行 npm run dev 或者 npm run production 编译
发送 请求 要用 axios 来写 例如 axios.post('/api/question/follow',{'question':this.question,'user':this.user}).then(response => {
this.followed = response.data.followed
})
基本 注意以上 两点 变化 不会出什么问题了
弄不好gulp 或者 npm install 或者 mix的同学 建议直接在app.blade.php文件头部引入以下文件 前提是 你讲select2的css还有js文件放入到了 public目录中 效果完全OK的
<link rel="stylesheet" href="/css/select2.min.css">
<script src="/js/select2.min.js"></script>
Jelly 看见了 回复下呗 forceCreate() 方法和 create() 方法 有啥区别?