iceking2nd

2429 经验值

已经可以了,就是没有加return,初次用这个东西还是有点懵,有的不需要加,有的需要加,后来翻翻源码知道了。谢谢老大。

dingo/api的response->collection方法是有什么特殊的设置么?
下面的代码,当$domains查数据库返回数据时,得到的body是空的,但是http_code是200。

问题截图:
1521797005

Laravel 5.6
dingo dev-master
jwt-auth dev-master
PHP 7.1

Controller.php
``

public function GetByMethod($method,$data)
{
    $transformer = [
        'domain_id' => 'id',
        'domain_name' => 'name',
        'master_server' => 'master',
        'last_check_time' => 'last_check',
        'zone_type' => 'type',
        'maintenance_account' => 'account'
    ];
    if(array_key_exists($method,$transformer))
    {
        $domains = Domain::where($transformer[$method],'=',$data)->get();
        if (count($domains))
        {
            $this->response->collection($domains,new DomainTransformer());
        }
        else
        {
            $this->response->errorNotFound();
        }
    }
    else
    {
        $this->response->errorBadRequest('Invalid query method');
    }
}

``

DomainTransformer.php
``
class DomainTransformer extends TransformerAbstract
{

public function transform(Domain $domain)
{
    return [
        'domain_id' => $domain['id'],
        'domain_name' => $domain['name'],
        'master_server' => $domain['master'],
        'last_check_time' => $domain['last_check'],
        'zone_type' => $domain['type'],
        'maintenance_account' => $domain['account']
    ];
}

}
``

我按照head.blade.php里面的代码添加了如下的代码,现在出现了新的问题。

    <script type="text/javascript">
        $(function() {
            var effectEditor = new Editor(url,ajaxTopicSearchUrl);
            effectEditor.render('#effectEditor');
            var solutionEditor = new Editor(url,ajaxTopicSearchUrl);
            solutionEditor.render('#solutionEditor');
        });
    </script>

三个textarea中,第一个textarea是正常的,但是帮助提示条显示了三遍,第二个和第三个textarea不显示工具条,也不显示实时预览的部分。

bsMarkdownTextArea是我做的一个blade组件,

{ Form::component('bsMarkdownTextArea','components.form.markdowntextarea',['name','label','value' => null,'attributes'=>[]]) }
<div class="form-group">
    {!! Form::label($name,$label,['class' => 'col-sm-2 control-label']) !!}
    <div class="col-sm-10">
        <div class="editor">
            {!! Form::textarea($name,$value,array_merge(['class' => 'form-control','id' =>'myEditor'  , 'placeholder' => $label ] , $attributes)) !!}
        </div>
    </div>
</div>

关于HTML的元素,id为effectEditor和solutionEditor的元素是存在的。

@include('editor::head')
{ Form::bsMarkdownTextArea('reason','故障原因') }
{ Form::bsMarkdownTextArea('effect','影响范围',null,['id'=>'effectEditor']) }
{ Form::bsMarkdownTextArea('solution','解决方案',null,['id'=>'solutionEditor']) }

后面我试过两种方式都不行。一种就是源码里面写的:
var effectEditor = new Editor({toolbar: false, status: true});
myEditor.rendor(’#effectEditor’);
var solutionEditor = new Editor({toolbar: false, status: true});
myEditor.rendor(’#solutionEditor’);
还有一种就是

$(function() {
    var effectEditor = new Editor({toolbar: false, status: true});
    myEditor.rendor(’#effectEditor’);
    var solutionEditor = new Editor({toolbar: false, status: true});
    myEditor.rendor(’#solutionEditor’);
});

这两种都不行。

bacheditor.js在@include('editor::header')的时候已经引用了。我发现他把Editor封装到$(function(){})里面去了。我对JS不是很熟,不太会实例这个对象。

我看了一下bacheditor.js的源码。
他介绍了实例化这部分用
var myEditor = new Editor({toolbar: false, status: true});
myEditor.rendor('#myEditor');

但是我这么用的时候他提示我Editor未定义。

这个编辑器支持一个页面多个markdown编辑器的实现么?如果支持,如何来做呢?

这个取决于你用的vue-resource的版本。现在的用法是
this.$http.get('index.json').then(function(data){ success soming..... },function(data){ error soming..... })